91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C#如何實現俄羅斯方塊游戲

發布時間:2021-05-17 10:54:14 來源:億速云 閱讀:216 作者:小新 欄目:編程語言

小編給大家分享一下C#如何實現俄羅斯方塊游戲,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

最近在看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));
  }
 }
 }

 
 }
 }

 
}

C#是什么

C#是一個簡單、通用、面向對象的編程語言,它由微軟Microsoft開發,繼承了C和C++強大功能,并且去掉了一些它們的復雜特性,C#綜合了VB簡單的可視化操作和C++的高運行效率,以其強大的操作能力、優雅的語法風格、創新的語言特性和便捷的面向組件編程從而成為.NET開發的首選語言,但它不適用于編寫時間急迫或性能非常高的代碼,因為C#缺乏性能極高的應用程序所需要的關鍵功能。

以上是“C#如何實現俄羅斯方塊游戲”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

图们市| 富锦市| 恩平市| 临漳县| 怀仁县| 辽中县| 诸暨市| 呼玛县| 乌拉特中旗| 迁安市| 马龙县| 惠安县| 西贡区| 上思县| 容城县| 洞口县| 佛学| 北流市| 航空| 荣昌县| 隆尧县| 普陀区| 孝义市| 突泉县| 东丽区| 建昌县| 广宗县| 壶关县| 定西市| 新田县| 剑川县| 封丘县| 洮南市| 丰县| 淳化县| 银川市| 曲沃县| 无极县| 昭平县| 顺平县| 溆浦县|