Tetris总结.docx
- 文档编号:11505207
- 上传时间:2023-03-02
- 格式:DOCX
- 页数:38
- 大小:99.51KB
Tetris总结.docx
《Tetris总结.docx》由会员分享,可在线阅读,更多相关《Tetris总结.docx(38页珍藏版)》请在冰豆网上搜索。
Tetris总结
Tetris创建了两个窗口FrmConfig,(游戏配置窗口)FrmTetris(游戏界面窗口),创建了6个类,1个存放数据的xml文件BlockSet
Block(存放一个砖块信息,在构造函数中可以看见组成一个砖块所需要的的必要信息,还包括砖块的行为变化函数的键值配置(顺时针旋转,逆时针旋转,以及砖块的擦除))
详情请访问我把视频或源代码发给你
BlockGroup(存放一组砖块的信息,从砖块组中获取一个砖块的方法),
BlockInfo(存放砖块的共同信息(样式,颜色等等),以及在画板上绘制砖块的方法),
Config(游戏操作配置信息,以及读取xml的方法,把更改信息保存在xml的方法),
InfoArr(存放多个BlockInfo的类,来生成画板上的砖块信息),
Palette(游戏进行的方法集合,包括游戏的开始,砖块向不同方向的移动方法,砖块的旋转方法,画板重画方法,游戏检查结束方法,游戏生成得分方法)
BlockSet(包括初始化砖块样式,颜色的信息等)
代码如下
Block类
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Text;
usingSystem.Drawing;
namespaceTetris
{
classBlock
{
protectedPoint[]structArr;//存?
放?
砖?
块é组哩?
成é信?
息¢的?
数簓组哩?
protectedint_xPos;//砖?
块é中D心?
点?
所ù在úx的?
坐?
标括?
protectedint_yPos;//砖?
块é中D心?
点?
所ù在úy的?
坐?
标括?
protectedColor_blockColor;//砖?
块é颜?
色?
protectedColordisapperColor;//擦á除y颜?
色?
protectedintrectPix;//每?
单蹋?
元a格?
像?
素?
publicBlock()//默?
认?
构1造ì函ˉ数簓,?
声Θ?
明÷此?
函ˉ数簓是?
为a了?
子哩?
类え?
的?
创洹?
建¨
{
}
publicBlock(Point[]sa,ColorbColor,ColordColor,intpix)
{//重?
载?
构1造ì函ˉ数簓,?
给?
成é员±变?
量?
赋3值μ
_blockColor=bColor;
disapperColor=dColor;
rectPix=pix;
structArr=sa;
}
publicPointthis[intindex]//索÷引皔器÷,?
根ù据Y索÷引皔访?
问ê砖?
块é里?
的?
小?
方?
块é的?
坐?
标括?
{
get
{
returnstructArr[index];
}
}
publicintLength//表括?
示?
struArr的?
长¤度è
{
get
{
returnstructArr.Length;
}
}
#region成é员±变?
量?
相à应畖的?
属?
性?
publicintXPos
{
get
{
return_xPos;
}
set
{
_xPos=value;
}
}
publicintYPos
{
get
{
return_yPos;
}
set
{
_yPos=value;
}
}
publicColorBlockColor
{
get
{
return_blockColor;
}
}
#endregion
publicvoidDeasilRotate()//顺3时骸?
针?
旋y转羇
{
inttemp;
for(inti=0;i { temp=structArr[i].X; structArr[i].X=structArr[i].Y; structArr[i].Y=-temp; } } publicvoidContraRotate()//顺3时骸? 针? 旋y转羇 { inttemp; for(inti=0;i { temp=structArr[i].X; structArr[i].X=-structArr[i].Y; structArr[i].Y=temp; } } privateRectanglePointToRect(Pointp) { returnnewRectangle((_xPos+p.X)*rectPix+1, (_yPos+p.Y)*rectPix+1, rectPix-2, rectPix-2); } publicvirtualvoidPaint(Graphicsgp)//在ú指? 定¨画-板? 上? 绘? 制? 砖? 块é { SolidBrushsb=newSolidBrush(_blockColor); foreach(PointpinstructArr) { lock(gp) { gp.FillRectangle(sb,PointToRect(p)); } } } publicvoiderase(Graphicsgp)//擦á除y矩? 形? { SolidBrushsb=newSolidBrush(Color.Black); foreach(PointpinstructArr) { lock(gp) { gp.FillRectangle(sb,PointToRect(p)); } } } } } BlockGroup类 usingSystem; usingSystem.Text; usingSystem.Drawing; usingSystem.Collections; namespaceTetris { classBlockGroup { privateInfoArrinfo;//存? 放? 所ù有瓺砖? 块é样ù式? 信? 息¢ privateColordisapperColor;//背? 景°色? privateintrectPix;//单蹋? 元a格? 像? 素? //privateConfigconfig=newConfig(); publicBlockGroup()//构1造ì函ˉ数簓 { Configconfig=newConfig(); config.LoadFromXmlFile(); info=newInfoArr(); info=config.Info; disapperColor=config.BackColor; rectPix=config.RectPix; } publicBlockGetABlock()//从洙? 砖? 块é组哩? 中D随? 机ú抽é取? 一? 个? 砖? 块é样ù式? 并¢返う? 回? { Randomrd=newRandom();//声Θ? 明÷一? 个? 产ú生Θ? 随? 机ú数簓的? 类え? intKeyOrder=rd.Next(0,info.Length);//产ú生Θ? 一? 个? 随? 机ú数簓 BitArrayba=info[KeyOrder].ID;//把? 抽é取? 的? 砖? 块é样ù式? 赋3给? BitArray的? 对? 象óba intstruNum=0;//确ā? 定¨这a个? 砖? 块é样ù式? 被? 填? 充? 方? 块é的? 个? 数簓。 £ foreach(boolbinba)//确ā? 定¨Point数簓组哩? 的? 长¤度è { if(b) { struNum++; } } Point[]structArr=newPoint[struNum];//新? 建¨一? 个? Point类え? ,? 并¢确ā? 定¨其? 长¤度è,? 以? 创洹? 建¨新? 的? Block intk=0; for(intj=0;j 循-环·给? Point数簓组哩truArr赋3坐? 标括? 值μ { if(ba[j]) { structArr[k].X=j/5-2; structArr[k].Y=2-j%5; k++; } } //创洹? 建¨一? 个? 新? 的? 砖? 块é并¢返う? 回? returnnewBlock(structArr,info[KeyOrder].BColor,disapperColor,rectPix); } } } BlockInfo类 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Collections; usingSystem.Drawing; namespaceTetris { classBlockInfo { privateBitArray_id;//存? 放? 砖? 块é样ù式? 信? 息¢ privateColor_bColor;//存? 放? 颜? 色? 信? 息¢ publicBlockInfo(BitArrayid,ColorbColor)//构1造ì函ˉ数簓,? 给? 私? 有瓺变? 量? 赋3值μ { _id=id; _bColor=bColor; } publicBitArrayID { get { return_id; } set { _id=value; } } publicColorBColor { get { return_bColor; } set { _bColor=value; } } publicstringGetIdStr() { StringBuilders=newStringBuilder(25); foreach(boolbin_id) { s.Append(b? "1": "0"); } returns.ToString(); } publicstringGetColorStr() { returnConvert.ToString(_bColor.ToArgb()); } } } Config类 usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Windows.Forms; usingSystem.Drawing; usingSystem.Xml; usingSystem.IO; usingSystem.Reflection; namespaceTetris { classConfig { privateKeys_downKey;//向ò下? 键ü privateKeys_dropKey;//丢a下? 键ü privateKeys_moveLeftKey;//向ò左哩? 键ü privateKeys_moveRightKey;//向ò右? 键ü privateKeys_deasilRotateKey;//顺3时骸? 针? 旋y转羇键ü privateKeys_contraRotateKey;//逆? 时骸? 针? 旋y转羇键ü privateint_coorWidth;//水? 平? 格? 子哩? 数簓 privateint_coorHeight;//垂? 直±格? 子哩? 数簓 privateint_rectPix;//方? 块é像? 素? privateColor_backColor;//背? 景°色? privateInfoArrinfo=newInfoArr();//砖? 块é信? 息¢集ˉ合? #region私? 有瓺变? 量? 相à应畖属? 性? publicKeysDownKey//向ò下? 键ü { get { return_downKey; } set { _downKey=value; } } publicKeysDropKey//抛×下? 键ü { get { return_dropKey; } set { _dropKey=value; } } publicKeysMoveLeftKey//向ò左哩? 键ü { get { return_moveLeftKey; } set { _moveLeftKey=value; } } publicKeysMoveRightKey//向ò右? 键ü { get { return_moveRightKey; } set { _moveRightKey=value; } } publicKeysDeasilRotateKey//顺3时骸? 针? 旋y转羇键ü { get { return_deasilRotateKey; } set { _deasilRotateKey=value; } } publicKeysContraRotateKey//逆? 时骸? 针? 旋y转羇键ü { get { return_contraRotateKey; } set { _contraRotateKey=value; } } publicintCoorWidth//水? 平? 格? 子哩? 长¤ { get { return_coorWidth; } set { if(value>=10&&value<=50) { _coorWidth=value; } } } publicintCoorHeight//垂? 直±格? 子哩? 长¤ { get { return_coorHeight; } set { if(value>=15&&value<=50) { _coorHeight=value; } } } publicintRectPix//方? 块é像? 素? { get { return_rectPix; } set { if(value>=10&&value<=30) { _rectPix=value; } } } publicColorBackColor//背? 景°色? { get { return_backColor; } set { _backColor=value; } } publicInfoArrInfo//砖? 块é信? 息¢集ˉ合? { get { returninfo; } set { info=value; } } #endregion publicvoidLoadFromXmlFile()//从洙? Xml中D读á取? 信? 息¢ { XmlTextReaderreader; if(File.Exists("BlockSet.xml")) {//优? 先è读á取? 外猘部? BloackSet并¢把? 信? 息¢写′入? blockInfo内ú reader=newXmlTextReader("BlockSet.xml"); } else {//如? 果? 外猘部? 资哩? 源′不? 存? 在ú,? 则ò从洙? 嵌? 入? 资哩? 源′读á取? BlockSet文? 件t Assemblyasm=Assembly.GetExecutingAssembly(); Streamsm=asm.GetManifestResourceStream("Tetris.BlockSet.xml"); reader=newXmlTextReader(sm); } stringkey=""; try { while(reader.Read())//读á取? Xml文? 件t { if(reader.NodeType==XmlNodeType.Element) { if(reader.Name=="ID") { key=reader.ReadElementString().Trim(); info.Add(key,""); } elseif(reader.Name=="Color") { info[key]=reader.ReadElementString().Trim(); } elseif(reader.Name=="DropKey") { _dropKey=(Keys)Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="DownKey") { _downKey=(Keys)Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="MoveLeftKey") { _moveLeftKey=(Keys)Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="MoveRightKey") { _moveRightKey=(Keys)Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="DeasilRotateKey") { _deasilRotateKey=(Keys)Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="ContraRotateKey") { _contraRotateKey=(Keys)Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="CoorWidth") { _coorWidth=Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="CoorHeight") { _coorHeight=Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="RectPix") { _rectPix=Convert.ToInt32(reader.ReadElementString().Trim()); } elseif(reader.Name=="BackColor") { _backColor=Color.FromArgb(Convert.ToInt32(reader.ReadElementString().Trim())); } } } } catch(Exceptionex) { MessageBox.Show(ex.ToString()); } finally { if(reader! =null) { reader.Close(); } } } publicvoidSaveToXmlFile()//把? 信? 息¢保馈? 存? 为axml文? 件t { XmlDocumentdoc=newXmlDocument(); doc.LoadXml(" XmlNoderoot=doc.SelectSingleNode("BlockSet"); //写′砖? 块é信? 息¢ for(inti=0;i { XmlElementxelType=doc.CreateElement("Type"); XmlElementxelID=doc.CreateElement("ID"); xelID.InnerText=((BlockInfo)info[i]).GetIdStr(); xelType.AppendChild(xelID); XmlElementxelColor=doc.CreateElement("Color"); xelColor.InnerText=((BlockInfo)info[i]).GetColorStr(); xelType.AppendChild(xelColor); root.AppendChild(xelType); } //写′快ì捷Y键ü XmlElementxelKey=doc.CreateElement("Key"); XmlElementxelDownKey=doc.CreateElement("DownKey"); xelDownKey.InnerText=Convert.ToInt32(_downKey).ToString(); xelKey.AppendChild(xelDownKey); XmlElementxelDropKey=doc.CreateElement("DropKey"); xelDropKey.InnerText=Convert.ToInt32(_dropKey).ToString(); xelKey.AppendChild(x
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Tetris 总结