亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C# > 正文

基于C#實現俄羅斯方塊游戲

2019-10-29 21:10:00
字體:
來源:轉載
供稿:網友

最近在看C#,寫了一個很水的方塊游戲練手。

C#,俄羅斯方塊

代碼:

namespace game{ class Square {  public Square()  {   state = 0;   positionY = 0;   positionX = 0;  }  public Square(int InitShapeCnt, int InitState)  {   state = InitState;   positionY = 0;   positionX = 0;   InitShape(InitShapeCnt);  }  public void InitShape(int ShapeCnt)  {   if (ShapeCnt > 6 || ShapeCnt < 0)    return;   else   {    switch (ShapeCnt)    {     case (0):      Shape = LeftLShape;      break;     case (1):      Shape = RightLShape;      break;     case (2):      Shape = RightZShape;      break;     case (3):      Shape = LeftZShape;      break;     case (4):      Shape = lShape;      break;     case (5):      Shape = TuShape;      break;     case (6):      Shape = TianShape;      break;     default:      break;    }   }  }  //方向 外形 顏色  public int[, ,,] Shape = new int[4, 4, 4, 2];  private int state; //方向  public int State  {   get   {    return (state);    }   set   {    state = value;   }  }  public void DrawSquare(ref Graphics dc)  {   for (int Cnt1 = 0; Cnt1<4; Cnt1++)   {    for(int Cnt2=0;Cnt2<4;Cnt2++)    {     //Shape[State][Cnt1][Cnt2][1] = 0;     if (Shape[state, Cnt1, Cnt2, 0] == 1)     {      SolidBrush Brush;      switch(Shape[state, Cnt1, Cnt2, 1])      {       case (1):        Brush = new SolidBrush(Color.Red);        break;       case (2):        Brush = new SolidBrush(Color.Blue);        break;       case (3):        Brush = new SolidBrush(Color.Yellow);        break;       case (4):        Brush = new SolidBrush(Color.Green);        break;       case (5):        Brush = new SolidBrush(Color.Tan);        break;       case (6):        Brush = new SolidBrush(Color.Honeydew);        break;       case (7):        Brush = new SolidBrush(Color.ForestGreen);        break;       default:        Brush = new SolidBrush(Color.Red);        break;              }      dc.FillRectangle(Brush, new Rectangle((positionX*16+16*Cnt2), (positionY*16+16*Cnt1), 16, 16));     }    }   }  }  private int positionX;  public int PositionX  {   get   {    return (positionX);   }   set   {    positionX = value;   }  }  private int positionY;  public int PositionY  {   get   {    return (positionY);   }   set   {    positionY = value;   }  }  public void Switch(GameCtrl game)  {   if (CoverEdge(game))    state = (state + 1) % 4;     }  public void AddX(GameCtrl game)  {   //判斷右側   if(RightEdge(game))    positionX++;  }  public bool AddY(GameCtrl game)  {   if (this.Land(game) == false)   {    positionY++;    return (true);   }   else    return(false);          }  public void SubX(GameCtrl game)  {   //判斷右側   if (LeftEdge(game))    positionX--;  }  public void SubY()  {  }  private bool Land(GameCtrl game)  {   for (int i = 3; i >= 0; i--)   {    int rowNum = 21 - this.PositionY - i;    for (int j = 0; j < 4; j++)    {     int colNum = this.PositionX + j + 3;     if (this.Shape[this.State, i, j, 0] == 1)     {      if (game.GameBox[rowNum][colNum, 0] == 1)      {       game.AddBox(this);             return (true);      }     }    }   }   return (false);  }  private bool RightEdge(GameCtrl game)  {   //判斷右側   for (int i = 3; i >= 0; i--)   {    int rowNum = this.PositionX + i + 4;    for (int j = 0; j < 4; j++)    {     int colNum = 22-this.PositionY-j;     if (this.Shape[this.State, j, i, 0] == 1)     {      if (game.GameBox[colNum][rowNum, 0] == 1)      {       return (false);      }     }    }   }   return (true);  }  private bool LeftEdge(GameCtrl game)  {   //判斷左側   for (int i = 0; i < 4; i++)   {    int rowNum = this.PositionX + i +2;    for (int j = 0; j < 4; j++)    {     int colNum = 22 - this.PositionY - j;     if (this.Shape[this.State, j, i, 0] == 1)     {      if (game.GameBox[colNum][rowNum, 0] == 1)      {       return (false);      }     }    }   }   return (true);  }  private bool CoverEdge(GameCtrl game)  {   //判斷變行是否有覆蓋   int preState = (this.State + 1) % 4;   for (int i = 0; i < 4; i++)   {    int rowNum = this.PositionX + i + 3;    for (int j = 0; j < 4; j++)    {     int colNum = 22 - this.PositionY - j;     if (this.Shape[preState, j, i, 0] == 1)     {      if (game.GameBox[colNum][rowNum, 0] == 1)      {       return (false);      }     }    }   }   return (true);   //return (false);  }  private int[, , ,] LeftLShape = {        {{{1,1},{0,0},{0,0},{0,0}},        {{1,1},{0,0},{0,0},{0,0}},        {{1,1},{1,1},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{1,1},{1,1},{1,1},{0,0}},        {{1,1},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{0,0},{1,1},{1,1},{0,0}},        {{0,0},{0,0},{1,1},{0,0}},        {{0,0},{0,0},{1,1},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{1,1},{0,0}},        {{1,1},{1,1},{1,1},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}}          };  private int[, , ,] RightLShape = {        {{{0,0},{0,0},{1,2},{0,0}},        {{0,0},{0,0},{1,2},{0,0}},        {{0,0},{1,2},{1,2},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{0,0},{0,0},{0,0},{0,0}},        {{1,2},{0,0},{0,0},{0,0}},        {{1,2},{1,2},{1,2},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{1,2},{1,2},{0,0},{0,0}},        {{1,2},{0,0},{0,0},{0,0}},        {{1,2},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{1,2},{1,2},{1,2},{0,0}},        {{0,0},{0,0},{1,2},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}}        };  private int[, , ,] LeftZShape = {        {{{1,3},{1,3},{0,0},{0,0}},        {{0,0},{1,3},{1,3},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{0,0},{1,3},{0,0},{0,0}},        {{1,3},{1,3},{0,0},{0,0}},        {{1,3},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{1,3},{1,3},{0,0},{0,0}},        {{0,0},{1,3},{1,3},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{0,0},{1,3},{0,0},{0,0}},        {{1,3},{1,3},{0,0},{0,0}},        {{1,3},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}}        };  private int[, , ,] RightZShape = {        {{{0,0},{1,4},{1,4},{0,0}},        {{1,4},{1,4},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{1,4},{0,0},{0,0},{0,0}},        {{1,4},{1,4},{0,0},{0,0}},        {{0,0},{1,4},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{0,0},{1,4},{1,4},{0,0}},        {{1,4},{1,4},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{1,4},{0,0},{0,0},{0,0}},        {{1,4},{1,4},{0,0},{0,0}},        {{0,0},{1,4},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}}        };  private int[, , ,] lShape = {        {{{1,6},{0,0},{0,0},{0,0}},        {{1,6},{0,0},{0,0},{0,0}},        {{1,6},{0,0},{0,0},{0,0}},        {{1,6},{0,0},{0,0},{0,0}}},        {{{0,0},{0,0},{0,0},{0,0}},        {{1,6},{1,6},{1,6},{1,6}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}},        {{{1,6},{0,0},{0,0},{0,0}},        {{1,6},{0,0},{0,0},{0,0}},        {{1,6},{0,0},{0,0},{0,0}},        {{1,6},{0,0},{0,0},{0,0}}},        {{{0,0},{0,0},{0,0},{0,0}},        {{1,6},{1,6},{1,6},{1,6}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}}        };  private int[, , ,] TuShape = {        {{{0,0},{1,7},{0,0},{0,0}},        {{1,7},{1,7},{1,7},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        },        {{{0,0},{1,7},{0,0},{0,0}},        {{1,7},{1,7},{0,0},{0,0}},        {{0,0},{1,7},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        },        {{{0,0},{0,0},{0,0},{0,0}},        {{1,7},{1,7},{1,7},{0,0}},        {{0,0},{1,7},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        },        {{{0,0},{1,7},{0,0},{0,0}},        {{0,0},{1,7},{1,7},{0,0}},        {{0,0},{1,7},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        },        };  private int[, , ,] TianShape = {        {        {{1,5},{1,5},{0,0},{0,0}},        {{1,5},{1,5},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        },        {        {{1,5},{1,5},{0,0},{0,0}},        {{1,5},{1,5},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        },        {        {{1,5},{1,5},{0,0},{0,0}},        {{1,5},{1,5},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        },        {        {{1,5},{1,5},{0,0},{0,0}},        {{1,5},{1,5},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}},        {{0,0},{0,0},{0,0},{0,0}}        }        }; } class GameCtrl {  public List<int[,]> GameBox = new List<int[,]>();  public int gameSclpe;  public GameCtrl()  {   gameSclpe = 0;   this.InitBox();  }  public void InitBox()  {   int[,] InitZore = new int[18, 2] { { 1, 0 }, { 1, 0 }, { 1, 0 },{ 0, 0 }, { 0, 0 }, { 0, 0 },            { 0, 0 }, { 0, 0 }, { 0, 0 },{ 0, 0 }, { 0, 0 }, { 0, 0 },             { 0, 0 }, { 0, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }};   int[,] InitOne = new int[18, 2] { { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 },            { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 },            { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 } };   GameBox.Add(InitOne);   GameBox.Add(InitOne);   GameBox.Add(InitOne);   for (int Cnt = 0; Cnt < 20; Cnt++)    GameBox.Add(InitZore);  }  public void ClrBox()  {   GameBox.Clear();  }  public void AddBox(Square landSquare)  {   for (int i = 0; i < 4; i++)   {    int rowNum = 22 - landSquare.PositionY - i;    int[,] ShapeRow = new int[18, 2];    for(int j =0;j<18;j++)    {     if (GameBox[rowNum][j, 0] == 1)     {      ShapeRow[j, 0] = 1;      ShapeRow[j, 1] = GameBox[rowNum][j, 1];     }    }    for (int j = 0; j < 4; j++)    {     int colNum = landSquare.PositionX + j+3;     if (landSquare.Shape[landSquare.State, i, j, 0] == 1)     {      ShapeRow[colNum, 0] = 1;      ShapeRow[colNum, 1] = landSquare.Shape[landSquare.State, i, j, 1];      }          }    GameBox[rowNum] = ShapeRow;   }   SubBox();  }  private void SubBox()  {   int[,] InitZore = new int[18, 2] { { 1, 0 }, { 1, 0 }, { 1, 0 },{ 0, 0 }, { 0, 0 }, { 0, 0 },            { 0, 0 }, { 0, 0 }, { 0, 0 },{ 0, 0 }, { 0, 0 }, { 0, 0 },             { 0, 0 }, { 0, 0 }, { 0, 0 }, { 1, 0 }, { 1, 0 }, { 1, 0 }};   int Cnt;   for (Cnt = 3; Cnt < 23; Cnt++)   {    int ColSum,Cnt2;    for (ColSum = 0, Cnt2 = 3; Cnt2 < 15;Cnt2++ )     ColSum += GameBox[Cnt][Cnt2, 0];    if(ColSum==12)    {     this.gameSclpe++;     GameBox.RemoveAt(3);     GameBox.Add(InitZore);     Cnt--;    }   }   }  public void BoxDraw(ref Graphics dc)  {   for (int Cnt1 = 3; Cnt1 < 23; Cnt1++)   {    for (int Cnt2 = 3; Cnt2 < 15; Cnt2++)    {     if (GameBox[Cnt1][Cnt2, 0] == 1)     {      SolidBrush Brush;      switch (GameBox[Cnt1][Cnt2, 1])      {       case (1):        Brush = new SolidBrush(Color.Red);        break;       case (2):        Brush = new SolidBrush(Color.Blue);        break;       case (3):        Brush = new SolidBrush(Color.Yellow);        break;       case (4):        Brush = new SolidBrush(Color.Green);        break;       case (5):        Brush = new SolidBrush(Color.Tan);        break;       case (6):        Brush = new SolidBrush(Color.Honeydew);        break;       case (7):        Brush = new SolidBrush(Color.ForestGreen);        break;       default:        Brush = new SolidBrush(Color.Red);        break;      }      dc.FillRectangle(Brush, new Rectangle((Cnt2-3)* 16, (22 - Cnt1) * 16, 16, 16));     }    }   }     } } }

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到c#教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美视频裸体精品| 中文字幕亚洲二区| 久久天天躁狠狠躁夜夜躁| 久久久久99精品久久久久| 久久久免费精品视频| 亚洲精品98久久久久久中文字幕| 91精品国产乱码久久久久久蜜臀| 久久久精品一区| 欧美精品激情blacked18| 一区二区三区日韩在线| 国产精品久久久久久av福利软件| 久久97精品久久久久久久不卡| 国产精品美女呻吟| 欧美性感美女h网站在线观看免费| 欧美三级xxx| 亚洲美女av在线| 国产精品欧美风情| 欧美中文字幕在线| 亚洲人成绝费网站色www| 欧美最猛性xxxxx免费| 亚洲护士老师的毛茸茸最新章节| 精品久久久久久久久国产字幕| 国产精品亚洲自拍| 97超碰国产精品女人人人爽| 亚洲欧美变态国产另类| 亚洲欧美日韩天堂一区二区| 国内精品一区二区三区四区| 久久亚洲精品网站| 精品久久久久久久久久ntr影视| 国产日韩欧美电影在线观看| 国产午夜一区二区| 国产一区二区三区网站| 欧美性猛交xxxx久久久| 九九热在线精品视频| 日韩激情第一页| 国产精品福利无圣光在线一区| 日本一区二区在线免费播放| 97av在线视频免费播放| 欧美激情国产精品| 91精品国产综合久久香蕉的用户体验| 欧美尺度大的性做爰视频| 久久久久久久网站| 久久亚洲精品国产亚洲老地址| 欧美日本在线视频中文字字幕| 国产精品色悠悠| 久久影院中文字幕| 亚洲区中文字幕| 亚洲精品电影网在线观看| www.午夜精品| 久久夜色撩人精品| 国产日韩欧美视频| 国产高清视频一区三区| 欧美成人免费观看| 亚洲一区二区中文字幕| 欧美综合在线观看| 97**国产露脸精品国产| 亚洲视频在线视频| 97色在线观看免费视频| 久久久精品久久久| 欧美激情一区二区三区成人| 5278欧美一区二区三区| 亚洲www在线| 亚洲一区二区三区乱码aⅴ| 国模私拍一区二区三区| 日韩电影免费观看中文字幕| 一区二区欧美在线| 国产精品综合网站| 亚洲欧美三级在线| 国产成人精品一区二区| 国内精品久久久久影院 日本资源| 国产一区红桃视频| 97碰在线观看| 中文字幕日韩专区| 97精品一区二区视频在线观看| 欧美日韩中文字幕在线| 青青久久aⅴ北条麻妃| 欧美成人小视频| 国产精品永久免费视频| 国产成人一区二| 亚洲精品乱码久久久久久按摩观| 亚洲国产欧美一区二区三区久久| 久久精品免费播放| 国产精品欧美久久久| 欧美亚洲国产精品| 丝袜亚洲欧美日韩综合| 中文字幕亚洲无线码a| 欧美极品欧美精品欧美视频| 国产亚洲欧洲高清| 成人中文字幕+乱码+中文字幕| 在线电影欧美日韩一区二区私密| 亚洲天堂精品在线| 色婷婷av一区二区三区在线观看| 97视频在线观看视频免费视频| 精品色蜜蜜精品视频在线观看| 91欧美精品午夜性色福利在线| 色综合五月天导航| 久久久精品久久久久| 欧美性生交大片免费| 在线激情影院一区| 97高清免费视频| 最近中文字幕日韩精品| 1769国产精品| 国模叶桐国产精品一区| 欧美性xxxxx| 国产精品久久不能| 欧美做受高潮电影o| 国产精品视频精品视频| 亚洲一区二区久久久久久| 午夜精品一区二区三区在线视频| 久久久精品国产一区二区| 国产69精品久久久久久| 久久久噜噜噜久噜久久| 国产精品男女猛烈高潮激情| 欧美成人精品h版在线观看| 亚洲国产精品福利| 欧美国产日韩一区二区三区| 丝袜亚洲欧美日韩综合| 精品成人乱色一区二区| 欧美日韩另类字幕中文| 色香阁99久久精品久久久| 在线精品播放av| 欧美成人免费在线观看| 欧美精品videofree1080p| 久久精品最新地址| 在线观看久久av| 在线观看欧美成人| 国产精品视频永久免费播放| 国产福利视频一区二区| 精品精品国产国产自在线| 国产日韩中文字幕在线| 孩xxxx性bbbb欧美| 国产日韩精品在线播放| 日韩成人在线电影网| 欧美成人三级视频网站| 欧美有码在线观看| 日本电影亚洲天堂| 亚洲成人免费在线视频| 国产日韩欧美在线播放| 亚洲欧美一区二区三区情侣bbw| 日本亚洲欧美成人| 日韩精品日韩在线观看| 欧美色欧美亚洲高清在线视频| 欧美裸身视频免费观看| 亚洲美女精品成人在线视频| 亚洲第一综合天堂另类专| 欧美激情女人20p| 日韩精品视频在线观看网址| 国产日韩av在线| 亚洲人成毛片在线播放| 亚洲最大av网| 91久久综合亚洲鲁鲁五月天| 精品一区二区电影| 中文字幕亚洲情99在线| 久久777国产线看观看精品| 国产免费久久av| 国产日韩在线精品av| 57pao精品| 亚洲jizzjizz日本少妇| 久久久天堂国产精品女人| 欧美成人免费全部| 777国产偷窥盗摄精品视频| 国产精品视频男人的天堂| 国产视频欧美视频| 日韩av在线电影网|