Tetris总结.docx

上传人:b****6 文档编号:11505207 上传时间:2023-03-02 格式:DOCX 页数:38 大小:99.51KB
下载 相关 举报
Tetris总结.docx_第1页
第1页 / 共38页
Tetris总结.docx_第2页
第2页 / 共38页
Tetris总结.docx_第3页
第3页 / 共38页
Tetris总结.docx_第4页
第4页 / 共38页
Tetris总结.docx_第5页
第5页 / 共38页
点击查看更多>>
下载资源
资源描述

Tetris总结.docx

《Tetris总结.docx》由会员分享,可在线阅读,更多相关《Tetris总结.docx(38页珍藏版)》请在冰豆网上搜索。

Tetris总结.docx

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

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 历史学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1