俄罗斯方块附代码1文档格式.docx
- 文档编号:17884167
- 上传时间:2022-12-11
- 格式:DOCX
- 页数:48
- 大小:76.65KB
俄罗斯方块附代码1文档格式.docx
《俄罗斯方块附代码1文档格式.docx》由会员分享,可在线阅读,更多相关《俄罗斯方块附代码1文档格式.docx(48页珍藏版)》请在冰豆网上搜索。
gp.DrawLine(p,i,1,i,155);
SolidBrushs=newSolidBrush(blockColor);
for(intx=0;
x<
5;
x++)
{
for(inty=0;
y<
y++)
if(struArr[x,y])
gp.FillRectangle(s,31*x+1,31*y+1,30,30);
}
点击“事件”,选择“MouseClick”
privatebool[,]struArr=newbool[5,5];
privateColorblockColor=Color.Red;
--------------------------------------------------------
if(e.Button!
=MouseButtons.Left)
return;
intxPos,yPos;
xPos=e.X/31;
yPos=e.Y/31;
struArr[xPos,yPos]=!
struArr[xPos,yPos];
boolb=struArr[xPos,yPos];
Graphicsgp=lblMode.CreateGraphics();
SolidBrushs=newSolidBrush(b?
blockColor:
Color.Black);
gp.FillRectangle(s,31*xPos+1,31*yPos+1,30,30);
gp.Dispose();
.添加ColorDialog控件
添加label(lblColor)控件
点击“事件”,选择“click”
colorDialog1.ShowDialog();
blockColor=colorDialog1.Color;
lblColor.BackColor=colorDialog1.Color;
lblMode.Invalidate();
.添加listView控件(lsvBlockSet)
点击“事件”,选择“ItemSelectionChanged”
if(e.IsSelected)
blockColor=Color.FromArgb(int.Parse(e.Item.SubItems[1].Text));
lblColor.BackColor=blockColor;
strings=e.Item.SubItems[0].Text;
for(inti=0;
s.Length;
i++)
struArr[i/5,i%5]=(s[i]=='
1'
)?
true:
false;
.“添加”按钮(btnAdd)
boolisEmpty=false;
foreach(booliinstruArr)
if(i)
isEmpty=true;
break;
if(!
isEmpty)
MessageBox.Show("
图案为空,请先用鼠标点击左边窗口绘制图案!
"
"
提示窗口"
MessageBoxButtons.OK,
MessageBoxIcon.Information);
StringBuildersb=newStringBuilder(25);
sb.Append(i?
1"
:
0"
);
stringblockString=sb.ToString();
foreach(ListViewItemiteminlsvBlockSet.Items)
if(item.SubItems[0].Text==blockString)
该图案已经存在!
ListViewItemmyItem=newListViewItem();
myItem=lsvBlockSet.Items.Add(blockString);
myItem.SubItems.Add(Convert.ToString(blockColor.ToArgb()));
.“删除”按钮(btnDel)
if(lsvBlockSet.SelectedItems.Count==0)
请在右边窗口选择一个条目进行删除!
lsvBlockSet.Items.Remove(lsvBlockSet.SelectedItems[0]);
btnClear.PerformClick();
.“清空”(btnClear)
struArr[x,y]=false;
.“修改”(btnUpdate)
请在右边窗口选择一个条目进行修改!
图案为空,请先用鼠标点击左边窗口绘制图案再进行修改!
lsvBlockSet.SelectedItems[0].SubItems[0].Text=sb.ToString();
lsvBlockSet.SelectedItems[0].SubItems[1].Text=Convert.ToString(blockColor.ToArgb());
(2)参数配置
.添加GroupBox1控件(gbKeySet)“键盘设置”
.拖入六个label控件
.拖入六个TextBox控件(改名)
全部选中,选择“事件”,选择“KeyDown”
if((e.KeyValue>
=33&
&
e.KeyValue<
=36)||(e.KeyValue>
=45&
=46)||
(e.KeyValue>
=48&
=57)||(e.KeyValue>
=65&
=90)||
=96&
=107)||(e.KeyValue>
=109&
=111)||
=186&
=192)||(e.KeyValue>
=219&
=222))
foreach(ControlcingbKeySet.Controls)
ControlTempC=casTextBox;
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();
((TextBox)sender).Tag=(Keys)e.KeyValue;
.添加GroupBox2控件(gbEnvironmentSet)“环境设置”
.拖入四个label控件
.拖入三个TextBox控件(改名)
一个label控件(lblBackColor)
选择“事件”,选择“click”
lblBackColor.BackColor=colorDialog1.Color;
.
.参数初始化设置
为配置窗体的代码窗口添加私有成员变量
privateConfigconfig=newConfig();
初始化
config.LoadFromXmlFile();
InfoArrinfo=config.Info;
info.Length;
myItem=lsvBlockSet.Items.Add(info[i].GetIdStr());
myItem.SubItems.Add(info[i].GetColorStr());
读快捷键及环境设置参数
txtDown.Text=((Keys)config.DownKey).ToString();
txtDown.Tag=config.DownKey;
txtDrop.Text=((Keys)config.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.DeasilRotateKey;
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;
.保存更改
保存用户更改的设置
InfoArrinfo=newInfoArr();
info.Add(item.SubItems[0].Text,item.SubItems[1].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.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();
二,信息保存
解决方案中添加BlockSet.Xml文件
<
BlockSet>
<
Type>
ID>
0000001100011000000000000<
/ID>
Color>
-65536<
/Color>
/Type>
0000000000111100000000000<
-16711936<
Tppe>
0000000000001100010000100<
-8323073<
/Tppe>
0010000100001100000000000<
-16776961<
0000000100001100010000000<
-32704<
0000000100001100001000000<
-32513<
0000000010001100010000000<
-8372160<
Key>
DownKey>
83<
/DownKey>
DropKey>
88<
/DropKey>
MoveLeftKey>
65<
/MoveLeftKey>
MoveRightKey>
68<
/MoveRightKey>
DeasilRotateKey>
99<
/DeasilRotateKey>
ContraRotateKey>
97<
/ContraRotateKey>
/Key>
Surface>
CoorWidth>
15<
/CoorWidth>
CoorHeight>
25<
/CoorHeight>
RectPix>
20<
/RectPix>
BackColor>
-16777216<
/BackColor>
/Surface>
/BlockSet>
三,一个砖块的信息类
解决方案中添加BlockInfo.cs类
privateBitArray_id;
privateColor_bColor;
publicBlockInfo(BitArrayid,ColorbColor)
_id=id;
_bColor=bColor;
publicBitArrayID
get
return_id;
set
_id=value;
publicColorBColor
return_bColor;
_bColor=value;
publicstringGetIdStr()
StringBuilders=newStringBuilder(25);
foreach(boolbin_id)
s.Append(b?
returns.ToString();
publicstringGetColorStr()
returnConvert.ToString(_bColor.ToArgb());
由于使用到了Color类,要添加命名空间
usingSyetem.Drawing;
由于使用了StringBuilder类以及BitArray类
usingSystem.Collections.Generic;
-->
usingSystem.Collections;
四,多个砖块信息类
解决方案中添加InfoArr.cs类
.各个方块信息类
privateArrayListinfo=newArrayList();
privateint_length=0;
publicintLength
return_length;
publicBlockInfothis[intindex]
return(BlockInfo)info[index];
publicstringthis[stringid]
if(value=="
info.Count;
if(((BlockInfo)info[i]).GetIdStr()==id)
try
((BlockInfo)info[i]).BColor=Color.FromArgb(Convert.ToInt32(value));
catch(System.FormatException)
颜色信息错误!
请删除BlockSet.xml文件,并重新启动程序"
错误信息"
MessageBoxIcon.Error);
//由于使用到了ArrayList,要添加命名空间
//由于使用到了MessageBox,要添加命名空间
usingSystem.Windows.Forms;
由于使用到了Color类,还要添加
.添加字符转换成员方法
privateBitArrayStrToBit(stringid)
if(id.Length!
=25)
thrownewSystem.FormatException("
砖块样式信息不合法!
BitArrayba=newBitArray(25);
25;
ba[i]=(id[i]=='
0'
false:
true;
returnba;
.添加砖块信息成员方法
publicvoidAdd(BitArrayid,ColorbColor)
info.Add(newBlockInfo(id,bColor));
_length++;
.对上面方法重载
publicvoidAdd(stringid,stringbColor)
Colortemp;
if(!
(bColor=="
))
temp=Color.FromArgb(Convert.ToInt32(bColor));
else
temp=Color.Empty;
info.Add(newBlockInfo(StrToBit(id),temp));
五,新建配置类
解决方案中添加Config.cs类
privateKeys_downKey;
privateKeys_dropKey;
privateKeys_moveLeftKey;
privateKeys_moveRightKey;
privateKeys_deasilRotateKey;
privateKeys_contraRotateKey;
privateint_coorWidth;
privateint_coorHeight;
privateint_rectPix;
privateColor_backColor;
privateInfoArrinfo=newInfoArr();
.私有变量属性
#region私有变量相应的属性
publicKeysDownKey
return_downKey;
_downKey=value;
publicKeysDropKey
return_dropKey;
_dropKey=value;
publicKeysMoveLeftKey
return_moveLeftKey;
_moveLeftKey=value;
pub
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 俄罗斯方块 代码
![提示](https://static.bdocx.com/images/bang_tan.gif)