C++俄罗斯方块程序设计详细说明.doc
《C++俄罗斯方块程序设计详细说明.doc》由会员分享,可在线阅读,更多相关《C++俄罗斯方块程序设计详细说明.doc(34页珍藏版)》请在三一文库上搜索。
1、该实验制作的是小游戏-俄罗斯方块1.可实现以下基本功能:用户可自定义添加或删除方块样式及颜色;用户可自定义修改游戏背景颜色及按键设置。2.另增加了几个功能:按键设置改变后点击保存,会弹出对话框提示“保存成功” ;点击“开始”运行游戏,背景音乐自动播放,点击暂停后,背景音乐也随之停止;每消除一行,会有特效声音提示消除成功;根据消行多少会自动加分并显示。游戏界面效果图如下:配置窗体效果图如下:砖块样式配置效果图如下:游戏设计分为如下九个部分:一, 新建窗体“配置窗体”(TrmConfig)添加TabControl控件(1) 砖块样式配置I.abel控件(lblMode)点击“事件”,选择“Pain
2、t”Graphics gp=e.Graphics;gp.Clear(Color.Black);Pen p=new Pen(Color.White);for (int i=31;i155;i=i+31)gp.DrawLine(p,1,i,155,i);for (int i=31;i155;i=i+31)gp.DrawLine(p,i,1,i,155);SolidBrush s=new SolidBrush(blockColor);for (int x=0;x5;x+)for(int y=0;y5;y+)if(struArrx,y)gp.FillRectangle(s,31*x+1,31*y+1,
3、30,30);点击“事件”,选择“MouseClick”private bool, struArr=new bool5,5;private Color blockColor=Color.Red;-if (e.Button!=MouseButtons.Left)return;int xPos,yPos;xPos=e.X/31;yPos=e.Y/31;struArrxPos,yPos=!struArrxPos,yPos;bool b=struArrxPos,yPos;Graphics gp=lblMode.CreateGraphics();SolidBrush s=new SolidBrush(b
4、 ? blockColor:Color.Black);gp.FillRectangle(s,31*xPos+1,31*yPos+1,30,30);gp.Dispose();II.添加ColorDialog控件添加label(lblColor)控件点击“事件”,选择“click”colorDialog1.ShowDialog();blockColor=colorDialog1.Color;lblColor.BackColor=colorDialog1.Color;lblMode.Invalidate();III.添加listView控件(lsvBlockSet)点击“事件”,选择“ItemSel
5、ectionChanged”if (e.IsSelected)blockColor=Color.FromArgb(int.Parse(e.Item.SubItems1.Text);lblColor.BackColor=blockColor;string s=e.Item.SubItems0.Text;for(int i=0;is.Length;i+)struArri/5,i%5=(si=1)?true:false;lblMode.Invalidate();IV.“添加”按钮(btnAdd)bool isEmpty=false;foreach (bool i in struArr)if(i)is
6、Empty=true;break;if (!isEmpty)MessageBox.Show(图案为空,请先用鼠标点击左边窗口绘制图案!,提示窗口,MessageBoxButtons.OK,MessageBoxIcon.Information);return;StringBuilder sb=new StringBuilder(25);foreach (bool i in struArr)sb.Append(i?1:0);string blockString=sb.ToString();foreach(ListViewItem item in lsvBlockSet.Items)if (item
7、.SubItems0.Text=blockString)MessageBox.Show(该图案已经存在!,提示窗口,MessageBoxButtons.OK,MessageBoxIcon.Information);return;ListViewItem myItem=new ListViewItem();myItem=lsvBlockSet.Items.Add(blockString);myItem.SubItems.Add(Convert.ToString(blockColor.ToArgb();V.“删除”按钮(btnDel)if(lsvBlockSet.SelectedItems.Cou
8、nt=0)MessageBox.Show(请在右边窗口选择一个条目进行删除!,提示窗口,MessageBoxButtons.OK,MessageBoxIcon.Information);return;lsvBlockSet.Items.Remove(lsvBlockSet.SelectedItems0);btnClear.PerformClick();VI.“清空”(btnClear)for (int x=0;x5;x+)for(int y=0;y=33 & e.KeyValue=45 & e.KeyValue=48 & e.KeyValue=65 & e.KeyValue=96 & e.Ke
9、yValue=109 & e.KeyValue=186 & e.KeyValue=219 & e.KeyValue=222)foreach(Control c in gbKeySet.Controls)Control TempC=c as TextBox;if(TempC!=null &(TextBox)TempC).Text!=)if(int)(TextBox)TempC).Tag)=e.KeyValue)(TextBox)TempC).Text=;(TextBox)TempC).Tag=Keys.None;(TextBox)sender).Text=e.KeyCode.ToString()
10、;(TextBox)sender).Tag=(Keys)e.KeyValue;II.添加GroupBox2控件(gbEnvironmentSet)“环境设置”i.拖入四个label控件ii.拖入三个TextBox控件(改名) 一个label控件(lblBackColor)选择“事件”,选择“click”colorDialog1.ShowDialog();lblBackColor.BackColor=colorDialog1.Color;III.i.参数初始化设置为配置窗体的代码窗口添加私有成员变量private Config config=new Config();初始化config.Load
11、FromXmlFile();InfoArr info = config.Info;ListViewItem myItem=new ListViewItem();for(int i=0;iinfo.Length;i+)myItem=lsvBlockSet.Items.Add(infoi.GetIdStr();myItem.SubItems.Add(infoi.GetColorStr();读快捷键及环境设置参数txtDown.Text=(Keys)config.DownKey).ToString();txtDown.Tag=config.DownKey;txtDrop.Text=(Keys)con
12、fig.DropKey).ToString();txtDrop.Tag=config.DropKey;txtLeft.Text=(Keys)config.MoveLeftKey).ToString();txtLeft.Tag=config.MoveLeftKey;txtRight.Text=(Keys)config.MoveRightKey).ToString();txtRight.Tag=config.MoveRightKey;txtDeasil.Text=(Keys)config.DeasilRotateKey).ToString();txtDeasil.Tag=config.Deasil
13、RotateKey;txtContra.Text=(Keys)config.ContraRotateKey).ToString();txtContra.Tag=config.ContraRotateKey;txtCoorWidth.Text=config.CoorWidth.ToString();txtCoorHeight.Text=config.CoorHeight.ToString();txtRectPix.Text=config.RectPix.ToString();lblBackColor.BackColor=config.BackColor;ii.保存更改选择“事件”,选择“clic
14、k”保存用户更改的设置InfoArr info=new InfoArr();foreach(ListViewItem item in lsvBlockSet.Items)info.Add(item.SubItems0.Text,item.SubItems1.Text);config.Info=info;config.DownKey=(Keys)txtDown.Tag;config.DropKey=(Keys)txtDrop.Tag;config.MoveLeftKey=(Keys)txtLeft.Tag;config.MoveRightKey=(Keys)txtRight.Tag;config
15、.DeasilRotateKey=(Keys)txtDeasil.Tag;config.ContraRotateKey=(Keys)txtContra.Tag;config.CoorWidth=int.Parse(txtCoorWidth.Text);config.CoorHeight=int.Parse(txtCoorHeight.Text);config.RectPix=int.Parse(txtRectPix.Text);config.BackColor=lblBackColor.BackColor;config.SaveToXmlFile();二, 信息保存解决方案中添加BlockSe
16、t.Xml文件 0000001100011000000000000 -65536 0000000000111100000000000 -16711936 0000000000001100010000100 -8323073 0010000100001100000000000 -16776961 0000000100001100010000000 -32704 0000000100001100001000000 -32513 0000000010001100010000000 -8372160 83 88 65 68 99 97 15 25 20 -16777216 三, 一个砖块的信息类解决方
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 俄罗斯方块 程序设计 详细 说明
链接地址:https://www.31doc.com/p-3257788.html