C++俄罗斯方块代码.docx
《C++俄罗斯方块代码.docx》由会员分享,可在线阅读,更多相关《C++俄罗斯方块代码.docx(55页珍藏版)》请在三一文库上搜索。
1、Block.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Windows.Forms;namespace Tetris / / 砖?块的?类 / class Block protected Point structArr;/储存?砖?块组成信?息的?坐?标数y组 protected int _xPos;/研D究?砖?块顶点?所在游?戏界?面?的?x坐?标 protected int _yPos;/研D究?砖
2、?块顶点?所在游?戏界?面?的?y坐?标 protected Color _blockColor;/砖?块的?颜?色? protected Color _disapperColor;/擦出?颜?色? protected int rectPix;/每?个?单元a格?的?像?素? public Block()/默?认?构1造函数y,?声明此?函数y是?为a了?子类能顺3利?创建 / Block类的?构1造函数y的?介绍 / Block类的?构1造函数y / / 储存?砖?块各点?的?Point类 / 砖?块颜?色? / 擦出?颜?色? / 砖?块像?素? public Block(Point sa
3、,Color bColor,Color dColor,int pix) _blockColor = bColor; _disapperColor = dColor; rectPix = pix; structArr = sa; public Point thisint index get return structArrindex; #region 成员变?量?相应|属?性? public int Lengce get return structArr.Length; public int xPos get return _xPos; set _xPos = value; public int
4、 yPos get return _yPos; set _yPos = value; public Color BlockColor get return _blockColor; #endregion public void DeasilRotate()/顺3时针?旋y转a int temp; for(int i=0;istructArr.Length;+i) temp = structArri.X; structArri.X = structArri.Y; structArri.Y = -temp; public void ContraRotate()/逆?时针?旋y转a int temp
5、; for (int i = 0; i structArr.Length; +i) temp = structArri.X; structArri.X = -structArri.Y; structArri.Y = temp; private Rectangle PointToRect(Point p) return new Rectangle(_xPos + p.X) * rectPix + 1, (_yPos - p.Y) * rectPix + 1, rectPix - 2, rectPix - 2); / / 在指?定画-板?下?绘?制?砖?块 / / 一?个?用?于绘?制?的?Gra
6、phics对?象 public virtual void Paint (Graphics gp) SolidBrush sb = new SolidBrush(_blockColor); foreach(Point p in structArr) lock(gp)/线?程锁? gp.FillRectangle(sb, PointToRect(p); public void erase(Graphics gp)/擦除y矩?形? SolidBrush sb = new SolidBrush(_disapperColor); foreach (Point p in structArr) lock (
7、gp) gp.FillRectangle(sb, PointToRect(p); BlockGroup.csusing System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Drawing;using System.Collections;namespace Tetris / / 用?于砖?块生产的?类 / class BlockGroup private InfoArr info;/存?放?所有D砖?块样式?信?息 private Color disapperColor
8、;/背3景色? private int rectPix;/单元a格?像?素? public BlockGroup()/构1造函数y Config config = new Config(); config.LoadFromXmlFile(); /info = new InfoArr(); info = config.Info; disapperColor = config.BackColor; rectPix = config.RectPix; public Block GetAblock()/从砖?块中D随?机抽取?一?个?砖?块样式?并返回? Random rd = new Random(
9、);/声明一?个?产生随?机数y的?类 int keyOrder = rd.Next(0, info.Lenth);/产生一?个?随?机数y(.Next(0,3)产生的?是?0,1,2) BitArray ba = infokeyOrder.Id;/抽取?的?砖?块样式?赋3给?BitArray类的?对?象ba int strNum = 0;/确定这a个?砖?块样式?中D被?填?充?的?方?块样式? foreach(bool b in ba)/即需要a确定Point数y组的?长度 if(b) strNum+; /*创建一?个?Point数y组并确定其?长度,以?创建新?的?Block*/ Po
10、int structArr = new PointstrNum; int k = 0; for(int j=0;jba.Length;+j)/循-环给?Point数y组StructArr赋3坐?标值 if(baj) structArrk.X = j % 5 - 2; structArrk.Y = 2 - j / 5; +k; /*创建新?砖?块并返回?*/ return new Block(structArr, infokeyOrder.BColor, disapperColor, rectPix); BlockInfo.cs:using System;using System.Collect
11、ions.Generic;using System.Linq;using System.Text;using System.Collections;using System.Drawing;namespace Tetris class BlockInfo private BitArray _id; private Color _bColor; public BlockInfo(BitArray id, Color bColor) _id = id; _bColor = bColor; public BitArray Id get return _id; set _id = value; pub
12、lic Color BColor get return _bColor; set _bColor = value; public string GetIdStr() StringBuilder s = new StringBuilder(25); foreach(bool b in _id) s.Append(b ? 1 : 0); return s.ToString(); public string GetColorStr() return Convert.ToString(_bColor.ToArgb(); BlockSet.xml: 0000001100011000000000000 -
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 俄罗斯方块 代码
链接地址:https://www.31doc.com/p-5013993.html