C#俄罗斯方块(附代码)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
C#俄罗斯方块程序设计
姓名:
学号:
专业:计算机科学与技术学院
班级:级班
时间:2009—2010年第一学期
该实验制作的是小游戏----俄罗斯方块
1.可实现以下基本功能:
用户可自定义添加或删除方块样式及颜色;
用户可自定义修改游戏背景颜色及按键设置。
2.另增加了几个功能:
按键设置改变后点击保存,会弹出对话框提示“保存成功”;
点击“开始”运行游戏,背景音乐自动播放,点击暂停后,背景音乐也随之停止;每消除一行,会有特效声音提示消除成功;
根据消行多少会自动加分并显示。
游戏界面效果图如下:
配置窗体效果图如下:
砖块样式配置效果图如下:
游戏设计分为如下九个部分:
一,新建窗体“配置窗体”(TrmConfig)添加TabControl控件
(1)砖块样式配置
I.abel控件(lblMode)
点击“事件”,选择“Paint”
Graphics gp=e.Graphics;
gp.Clear(Color.Black);
Pen p=new Pen(Color.White);
for (int i=31;i<155;i=i+31)
gp.DrawLine(p,1,i,155,i);
for (int i=31;i<155;i=i+31)
gp.DrawLine(p,i,1,i,155);
SolidBrush s=new SolidBrush(blockColor);
for (int x=0;x<5;x++)
{
for(int y=0;y<5;y++)
{
if(struArr[x,y])
{
gp.FillRectangle(s,31*x+1,31*y+1,30,30);
}
}
}
点击“事件”,选择“MouseClick”
private bool[,] struArr=new bool[5,5];
private Color blockColor=Color.Red;
--------------------------------------------------------
if (e.Button!=MouseButtons.Left)
return;
int xPos,yPos;
xPos=e.X/31;
yPos=e.Y/31;
struArr[xPos,yPos]=!struArr[xPos,yPos];
bool b=struArr[xPos,yPos];
Graphics gp=lblMode.CreateGraphics();
SolidBrush s=new SolidBrush(b ? 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)
点击“事件”,选择“ItemSelectionChanged”
if (e.IsSelected)
{
blockColor=Color.FromArgb(int.Parse(e.Item.SubItems[1].Text));
lblColor.BackColor=blockColor;
string s=e.Item.SubItems[0].Text;
for(int i=0;i { struArr[i/5,i%5]=(s[i]=='1')?true:false; } lblMode.Invalidate(); } IV.“添加”按钮(btnAdd) bool isEmpty=false; foreach (bool i in struArr) { if(i) { isEmpty=true; break; } } if (!isEmpty) { MessageBox.Show("图案为空,请先用鼠标点击左边窗口绘制图案!","提示窗口", MessageBoxButtons.OK, rmation); 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.SubItems[0].Text==blockString) { MessageBox.Show("该图案已经存在!","提示窗口",