📄 tcsform.cs
字号:
break;
case 4:
//向左
myArray[0] = new Point(15, 0) ;
myArray[1] = new Point(0 , 7) ;
myArray[2] = new Point(0 , 8) ;
myArray[3] = new Point(15 , 15) ;
break;
}
GraphicsPath gp = new GraphicsPath();
gp.AddPolygon(myArray);
Region r = new Region(gp);
SnakeHead.Region = r;
}
private void SnakeTail_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
{
//画蛇头的外观
PictureBox SnakeHead = (PictureBox)sender ;
Point[] myArray = new Point[4] ;
switch(Snake[LenSnake].Direction)
{
case 1:
//向上
myArray[0] = new Point(0 , 0) ;
myArray[1] = new Point(7 , 15) ;
myArray[2] = new Point(7 , 15) ;
myArray[3] = new Point(15 , 0) ;
break;
case 2:
//向右
myArray[0] = new Point(15, 0) ;
myArray[1] = new Point(0 , 7) ;
myArray[2] = new Point(0 , 7) ;
myArray[3] = new Point(15 , 15) ;
break;
case 3:
//向下
myArray[0] = new Point(0 , 15) ;
myArray[1] = new Point(7 , 0) ;
myArray[2] = new Point(8 , 0) ;
myArray[3] = new Point(15 ,15) ;
break;
case 4:
//向左
myArray[0] = new Point(0 , 0) ;
myArray[1] = new Point(15, 7) ;
myArray[2] = new Point(15, 8) ;
myArray[3] = new Point(0 , 15) ;
break;
}
GraphicsPath gp = new GraphicsPath();
gp.AddPolygon(myArray);
Region r = new Region(gp);
SnakeHead.Region = r;
}
private void TCSForm_KeyDown(object sender, System.Windows.Forms.KeyEventArgs e)
{
//响应键盘
string S = "" ;
S = e.KeyCode.ToString() ;
if( S == "Up")
{
//蛇头向上
if(Snake[0].Direction != 3 )
{
DataRow workRow = Inflexion.NewRow();
workRow["X"] = Snake[0].Pic.Left ;
workRow["Y"] = Snake[0].Pic.Top ;
workRow["Direction"] = 1 ;
Inflexion.Rows.Add(workRow) ;
}
}
if( S == "Right")
{
//蛇头向右
if(Snake[0].Direction != 4 )
{
DataRow workRow = Inflexion.NewRow();
workRow["X"] = Snake[0].Pic.Left ;
workRow["Y"] = Snake[0].Pic.Top ;
workRow["Direction"] = 2 ;
Inflexion.Rows.Add(workRow) ;
}
}
if( S == "Down")
{
//蛇头向下
if(Snake[0].Direction != 1 )
{
DataRow workRow = Inflexion.NewRow();
workRow["X"] = Snake[0].Pic.Left ;
workRow["Y"] = Snake[0].Pic.Top ;
workRow["Direction"] = 3 ;
Inflexion.Rows.Add(workRow) ;
}
}
if( S == "Left")
{
//蛇头向左
if(Snake[0].Direction != 2 )
{
DataRow workRow = Inflexion.NewRow();
workRow["X"] = Snake[0].Pic.Left ;
workRow["Y"] = Snake[0].Pic.Top ;
workRow["Direction"] = 4 ;
Inflexion.Rows.Add(workRow) ;
}
}
}
private void Initialize()
{
//游戏初始化
//参数初始化
LenSnake = 0 ;//蛇身共0节
LenNode = 15 ;//每节15象素
Inflexion.Clear();
Snake = new SnakeType[1000];
//清空现有元素
while (Lawn.Controls.Count > 0)
{
Lawn.Controls[0].Dispose();
}
//生成蛇
CreateSnake();
//生成蛋
CreateEgg();
}
private void GameStop()
{
//游戏结束
GameTime.Stop();
MessageBox.Show("游戏结束!");
}
private void CreateEgg()
{
//创建蛋
Egg = new PictureBox() ;
Egg.Visible = false;
Egg.Name = "Egg";
Egg.BackColor = System.Drawing.Color.Yellow ;
Egg.ClientSize = new Size(15, 15);
Egg.Parent = Lawn ;
Egg.Paint += new System.Windows.Forms.PaintEventHandler(this.Egg_Paint);
MoveEgg();
}
private void CreateSnake()
{
//创建蛇
int i;
//创建蛇头
Snake[LenSnake].Direction = 3 ;
Snake[LenSnake].Pic = new PictureBox() ;
Snake[LenSnake].Pic.Name = "SnakeHead";
Snake[LenSnake].Pic.BackColor = System.Drawing.Color.Transparent ;
Snake[LenSnake].Pic.ClientSize = new Size(15, 15);
Snake[LenSnake].Pic.Parent = Lawn ;
Snake[LenSnake].Pic.Paint += new System.Windows.Forms.PaintEventHandler(this.SnakeHead_Paint);
MoveSnake(1,3,Snake[LenSnake].Pic);
Snake[LenSnake].Pic.Left = 0 ;
Snake[LenSnake].Pic.Top = (3 + 1 ) * LenNode ;
Snake[LenSnake].Pic.Visible = true;
LenSnake++;
//创建 3 节蛇身
for(i=1;i<=3;i++)
{
Snake[LenSnake].Direction = 3 ;
Snake[LenSnake].Pic = new PictureBox() ;
Snake[LenSnake].Pic.Name = "SnakeSkin"+LenSnake.ToString() ;
Snake[LenSnake].Pic.BackColor = System.Drawing.Color.Transparent ;
Snake[LenSnake].Pic.ClientSize = new Size(15, 15);
Snake[LenSnake].Pic.Parent = Lawn ;
MoveSnake(2,3,Snake[LenSnake].Pic);
Snake[LenSnake].Pic.Left = 0 ;
Snake[LenSnake].Pic.Top = (3 - i + 1 ) * LenNode ;
Snake[LenSnake].Pic.Visible = true;
LenSnake++;
}
//创建蛇尾
Snake[LenSnake].Direction = 3 ;
Snake[LenSnake].Pic = new PictureBox() ;
Snake[LenSnake].Pic.Name = "SnakeTail";
Snake[LenSnake].Pic.BackColor = System.Drawing.Color.Transparent ;
Snake[LenSnake].Pic.ClientSize = new Size(15, 15);
Snake[LenSnake].Pic.Parent = Lawn ;
Snake[LenSnake].Pic.Paint += new System.Windows.Forms.PaintEventHandler(this.SnakeTail_Paint);
MoveSnake(3,3,Snake[LenSnake].Pic);
Snake[LenSnake].Pic.Left = 0 ;
Snake[LenSnake].Pic.Top = 0 ;
Snake[LenSnake].Pic.Visible = true;
}
private void MoveEgg()
{
//移动蛋
Egg.Visible = false ;
Random NumRand = new Random();
int XNum = Lawn.Width/LenNode - 1 ;
int YNum = Lawn.Height/LenNode - 1 ;
int i = 0 ;
int X = 0 ;
int Y = 0 ;
bool sure = true ;
bool GTime = false ;
//确定显示坐标
if(GameTime.Enabled == true)
{
GTime = true ;
GameTime.Stop();
}
while (sure)
{
X = NumRand.Next(0,XNum) ;
Y = NumRand.Next(0,YNum) ;
X = X * LenNode ;
Y = Y * LenNode ;
for(i=0;i<LenSnake;i++)
{
if((Snake[i].Pic.Left == X)&&(Snake[i].Pic.Top == Y))
{
break;
}
}
if(i == LenSnake)
{
sure = false ;
}
}
Egg.Left = NumRand.Next(1,XNum) * LenNode;
Egg.Top = NumRand.Next(1,YNum) * LenNode;
Egg.Visible = true;
if(GTime == true)
{
GameTime.Start();
}
}
private void MoveSnake(int type,int Direction,PictureBox TmpPic)
{
//生成蛇图
Bitmap MyImage ;
MyImage = new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"images\TCS\SnakeSkin.jpg");
switch(type)
{
case 1:
//蛇头
MyImage = new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"images\TCS\SnakeHead.jpg");
break;
case 2:
//蛇身
MyImage = new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"images\TCS\SnakeSkin.jpg");
break;
case 3:
//蛇尾
MyImage = new Bitmap(AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"images\TCS\SnakeTail.jpg");
break;
}
switch(Direction)
{
case 1:
//向上
MyImage.RotateFlip(RotateFlipType.Rotate270FlipNone);
break;
case 2:
//向右
break;
case 3:
//向下
MyImage.RotateFlip(RotateFlipType.Rotate90FlipNone);
break;
case 4:
//向左
MyImage.RotateFlip(RotateFlipType.Rotate180FlipNone);
break;
}
TmpPic.Image = MyImage ;
}
private void SnakeAdd()
{
//增加蛇身长度
//蛇尾变蛇身
int left,top;
left = Snake[LenSnake].Pic.Left ;
top = Snake[LenSnake].Pic.Top ;
Snake[LenSnake].Pic.Dispose() ;
Snake[LenSnake].Pic = new PictureBox() ;
Snake[LenSnake].Pic.Name = "SnakeSkin"+LenSnake.ToString() ;
Snake[LenSnake].Pic.BackColor = System.Drawing.Color.Transparent ;
Snake[LenSnake].Pic.ClientSize = new Size(15, 15);
Snake[LenSnake].Pic.Parent = Lawn ;
MoveSnake(2,3,Snake[LenSnake].Pic);
Snake[LenSnake].Pic.Left = left ;
Snake[LenSnake].Pic.Top = top ;
Snake[LenSnake].Pic.Visible = true;
LenSnake++;
//生成蛇尾
Snake[LenSnake].Direction = Snake[LenSnake - 1].Direction ;
Snake[LenSnake].Pic = new PictureBox() ;
Snake[LenSnake].Pic.Name = "SnakeTail";
Snake[LenSnake].Pic.BackColor = System.Drawing.Color.Transparent ;
Snake[LenSnake].Pic.ClientSize = new Size(15, 15);
Snake[LenSnake].Pic.Parent = Lawn ;
Snake[LenSnake].Pic.Paint += new System.Windows.Forms.PaintEventHandler(this.SnakeTail_Paint);
MoveSnake(3,Snake[LenSnake].Direction,Snake[LenSnake].Pic);
//定位蛇尾位置
switch (Snake[LenSnake].Direction)
{
case 1:
//向上
Snake[LenSnake].Pic.Left = Snake[LenSnake-1].Pic.Left ;
Snake[LenSnake].Pic.Top = Snake[LenSnake-1].Pic.Top + LenNode ;
break;
case 2:
//向右
Snake[LenSnake].Pic.Left = Snake[LenSnake-1].Pic.Left - LenNode ;
Snake[LenSnake].Pic.Top = Snake[LenSnake-1].Pic.Top ;
break;
case 3:
//向下
Snake[LenSnake].Pic.Left = Snake[LenSnake-1].Pic.Left ;
Snake[LenSnake].Pic.Top = Snake[LenSnake-1].Pic.Top - LenNode ;
break;
case 4:
//向左
Snake[LenSnake].Pic.Left = Snake[LenSnake-1].Pic.Left + LenNode ;
Snake[LenSnake].Pic.Top = Snake[LenSnake-1].Pic.Top ;
break;
}
Snake[LenSnake].Pic.Visible = true;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -