using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using System.Data;
namespace SNAKE
{
/// <summary>
/// Form1 的摘要说明。
/// </summary>
public class Form1 : System.Windows.Forms.Form
{
private System.Windows.Forms.Timer timer1;
private System.Windows.Forms.MainMenu mainMenu1;
private System.Windows.Forms.MenuItem menuItem1;
private System.Windows.Forms.MenuItem menuItem2;
private System.Windows.Forms.MenuItem menuItem3;
private System.Windows.Forms.MenuItem menuItem4;
private System.Windows.Forms.MenuItem menuItem5;
private System.Windows.Forms.MenuItem menuItem6;
private System.Windows.Forms.MenuItem menuItem7;
private System.ComponentModel.IContainer components;
public Point [] SnkLct=new Point[500];
public int SnkLen;
public int speed=150;
private System.Windows.Forms.Label label1;
public byte SnkDrt=2;
public Point FoodLct=new Point();
private System.Windows.Forms.MenuItem menuItem8;
private System.Windows.Forms.MenuItem menuItem9;
private System.Windows.Forms.MenuItem menuItem10;
private System.Windows.Forms.MenuItem menuItem11;
private System.Windows.Forms.MenuItem menuItem12;
private System.Windows.Forms.Label label3;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.Label label6;
public int score=0;
private System.Windows.Forms.MenuItem menuItem13;
private System.Windows.Forms.MenuItem menuItem14;
public bool pause;
public Form1()
{
//
// Windows 窗体设计器支持所必需的
//
InitializeComponent();
//
// TODO: 在 InitializeComponent 调用后添加任何构造函数代码
//
}
/// <summary>
/// 清理所有正在使用的资源。
/// </summary>
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
#region Windows 窗体设计器生成的代码
/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
/// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
this.timer1 = new System.Windows.Forms.Timer(this.components);
this.mainMenu1 = new System.Windows.Forms.MainMenu();
this.menuItem1 = new System.Windows.Forms.MenuItem();
this.menuItem2 = new System.Windows.Forms.MenuItem();
this.menuItem3 = new System.Windows.Forms.MenuItem();
this.menuItem4 = new System.Windows.Forms.MenuItem();
this.menuItem5 = new System.Windows.Forms.MenuItem();
this.menuItem6 = new System.Windows.Forms.MenuItem();
this.menuItem7 = new System.Windows.Forms.MenuItem();
this.menuItem8 = new System.Windows.Forms.MenuItem();
this.menuItem9 = new System.Windows.Forms.MenuItem();
this.menuItem10 = new System.Windows.Forms.MenuItem();
this.menuItem11 = new System.Windows.Forms.MenuItem();
this.menuItem12 = new System.Windows.Forms.MenuItem();
this.menuItem13 = new System.Windows.Forms.MenuItem();
this.menuItem14 = new System.Windows.Forms.MenuItem();
this.label1 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
this.label4 = new System.Windows.Forms.Label();
this.label5 = new System.Windows.Forms.Label();
this.label6 = new System.Windows.Forms.Label();
this.SuspendLayout();
//
// timer1
//
this.timer1.Tick += new System.EventHandler(this.timer1_Tick);
//
// mainMenu1
//
this.mainMenu1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem1,
this.menuItem6,
this.menuItem13});
//
// menuItem1
//
this.menuItem1.Index = 0;
this.menuItem1.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem2,
this.menuItem3,
this.menuItem4,
this.menuItem5});
this.menuItem1.Text = "游戏(&G)";
//
// menuItem2
//
this.menuItem2.Index = 0;
this.menuItem2.Text = "开始";
this.menuItem2.Click += new System.EventHandler(this.menuItem2_Click);
//
// menuItem3
//
this.menuItem3.Enabled = false;
this.menuItem3.Index = 1;
this.menuItem3.Text = "暂停";
this.menuItem3.Click += new System.EventHandler(this.menuItem3_Click);
//
// menuItem4
//
this.menuItem4.Index = 2;
this.menuItem4.Text = "-";
//
// menuItem5
//
this.menuItem5.Index = 3;
this.menuItem5.Text = "退出";
this.menuItem5.Click += new System.EventHandler(this.menuItem5_Click);
//
// menuItem6
//
this.menuItem6.Index = 1;
this.menuItem6.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem7});
this.menuItem6.Text = "设置(&S)";
//
// menuItem7
//
this.menuItem7.Index = 0;
this.menuItem7.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem8,
this.menuItem9,
this.menuItem10,
this.menuItem11,
this.menuItem12});
this.menuItem7.Text = "难度";
//
// menuItem8
//
this.menuItem8.Index = 0;
this.menuItem8.Text = "Level 1";
this.menuItem8.Click += new System.EventHandler(this.menuItem8_Click);
//
// menuItem9
//
this.menuItem9.Index = 1;
this.menuItem9.Text = "Level 2";
this.menuItem9.Click += new System.EventHandler(this.menuItem9_Click);
//
// menuItem10
//
this.menuItem10.Index = 2;
this.menuItem10.Text = "Level 3";
this.menuItem10.Click += new System.EventHandler(this.menuItem10_Click);
//
// menuItem11
//
this.menuItem11.Index = 3;
this.menuItem11.Text = "Level 4";
this.menuItem11.Click += new System.EventHandler(this.menuItem11_Click);
//
// menuItem12
//
this.menuItem12.Index = 4;
this.menuItem12.Text = "Level 5";
this.menuItem12.Click += new System.EventHandler(this.menuItem12_Click);
//
// menuItem13
//
this.menuItem13.Index = 2;
this.menuItem13.MenuItems.AddRange(new System.Windows.Forms.MenuItem[] {
this.menuItem14});
this.menuItem13.Text = "帮助(&H)";
//
// menuItem14
//
this.menuItem14.Index = 0;
this.menuItem14.Text = "关于...";
this.menuItem14.Click += new System.EventHandler(this.menuItem14_Click);
//
// label1
//
this.label1.BackColor = System.Drawing.Color.Red;
this.label1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D;
this.label1.ForeColor = System.Drawing.Color.DarkRed;
this.label1.Location = new System.Drawing.Point(620, 16);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(15, 15);
this.label1.TabIndex = 0;
//
// label3
//
this.label3.BackColor = System.Drawing.Color.Red;
this.label3.Location = new System.Drawing.Point(0, 1);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(600, 1);
this.label3.TabIndex = 2;
this.label3.Text = "label3";
//
// label4
//
this.label4.BackColor = System.Drawing.Color.Red;
this.label4.Location = new System.Drawing.Point(0, 445);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(600, 1);
this.label4.TabIndex = 2;
this.label4.Text = "label3";
//
// label5
//
this.label5.BackColor = System.Drawing.Color.Red;
this.label5.Location = new System.Drawing.Point(2, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(1, 445);
this.label5.TabIndex = 2;
this.label5.Text = "label3";
//
// label6
//
this.label6.BackColor = System.Drawing.Color.Red;
this.label6.Location = new System.Drawing.Point(588, 0);
this.label6.Name = "label6";
this.label6.Size = new System.Drawing.Size(1, 445);
this.label6.TabIndex = 2;
this.label6.Text = "label3";
//
// Form1
//
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(590, 451);
this.Controls.Add(this.label3);
this.Controls.Add(this.label1);
this.Controls.Add(this.label4);
this.Controls.Add(this.label5);
this.Controls.Add(this.label6);
this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.Fixed3D;
this.MaximizeBox = false;
this.Menu = this.mainMenu1;
this.Name = "Form1";
this.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen;
this.Text = "贪食蛇 v1.0.3 By p6";
this.KeyPress += new System.Windows.Forms.KeyPressEventHandler(this.Form1_KeyPress);
this.Load += new System.EventHandler(this.Form1_Load);
this.ResumeLayout(false);
}
#endregion
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
//蛇形
private void Drawshape(int x,int y)
{
System.Drawing .Graphics g;
g=this.CreateGraphics();
g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
Pen pen1=new Pen (Color.Blue,1);
SolidBrush brush1=new SolidBrush(Color.Blue);
g.DrawRectangle(pen1,x,y,15,15);
g.FillRectangle(brush1,x,y,15,15);
}
//食物
private void Food()
{
Random rmd=new Random();
Point pt=new Point();
pt.X =rmd.Next(1,30)*20;
pt.Y =rmd.Next (1,21)*20;
label1.Location=pt;
FoodLct.X=pt.X ;FoodLct.Y=pt.Y ;
}
//食物被吃
private bool Eated()
{
if(SnkLct[1].X ==FoodLct.X && SnkLct[1].Y ==FoodLct.Y)
{
SnkLen++;
SnkLct[SnkLen].X=SnkLct[SnkLen-1].X ;
SnkLct[SnkLen].Y=SnkLct[SnkLen-1].Y ;
score+=10;
return true;
}
else
return false;
}
private bool Dead()
{
for(int i=2 ;i<=SnkLen;i++)
{
if(SnkLct[1].X ==SnkLct[i].X && SnkLct[1].Y==SnkLct[i].Y) return true;
}
if(SnkLct[1].X >600 || SnkLct[1].Y >445 || SnkLct[1].X <0 || SnkLct[1].Y<0)
return true;
else
return false;
}
//行走
private void Forward(int drc)
{
Point tmp=new Point();
tmp.X =SnkLct[1].X ;
tmp.Y =SnkLct[1].Y ;
for(int i=SnkLen;i>1;i--) //将方块坐标后移
{
SnkLct[i].X =SnkLct[i-1].X ;
SnkLct[i].Y =SnkLct[i-1].Y ;
}
switch(drc)
{
case 1:
{SnkLct[1].X =tmp.X ;SnkLct[1].Y =tmp.Y-20 ;break;} //上
case 2:
{SnkLct[1].X =tmp.X+20 ;SnkLct[1].Y =tmp.Y ;break;} //右
case 3:
{SnkLct[1].X =tmp.X ;SnkLct[1].Y =tmp.Y+20 ;break;} //下
case 4:
{SnkLct[1].X =tmp.X-20 ;SnkLct[1].Y =tmp.Y ;break;} //左
}
for(int i=1;i<=SnkLen;i++)
{
Drawshape(SnkLct[i].X ,SnkLct[i].Y );
}
}
//最初状态
private void Form1_Load(object sender, System.EventArgs e)
{
int startl=0;
SnkLen=5;
for(int i=5;i>=1;i--)
{
SnkLct[i].X =startl;SnkLct[i].Y=0;
startl+=20;
}
SnkDrt=2;
}
//开始单击事件
private void menuItem2_Click(object sender, System.EventArgs e)
{
Form1_Load(sender ,e);
for(int i=1;i<=SnkLen;i++)
{
Drawshape(SnkLct[i].X ,SnkLct[i].Y );
}
timer1.Interval =speed;
timer1.Enabled=true;
Food();
menuItem3.Enabled=true;
}
private void timer1_Tick(object sender, System.EventArgs e)
{
System.Drawing .Graphics g;
g=this.CreateGraphics();g.Clear (Color.Black);
Forward(SnkDrt);
if(Eated()) Food();
if(Dead())
{
timer1.Enabled=false;
MessageBox.Show ("死了!撞猪上了!!/n"+"得分:"+score,":(",MessageBoxButtons.OK ,MessageBoxIcon.Information );
}
this.Text ="贪食蛇 v1.0.3 By p6"+ " " + "当前得分:" + score;
}
//方向
private void Form1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e)
{
switch(e.KeyChar)
{
case '8':
{
if(SnkDrt!=3)
SnkDrt=1;break;
}
case '6':
{
if(SnkDrt!=4)
SnkDrt=2;break;
}
case '5':
{
if(SnkDrt!=1)
SnkDrt=3;break;
}
case '4':
{
if(SnkDrt!=2)
SnkDrt=4;break;
}
}
}
private void menuItem8_Click(object sender, System.EventArgs e)
{
timer1.Interval=50;speed=30;
}
private void menuItem9_Click(object sender, System.EventArgs e)
{
timer1.Interval=100;speed=100;
}
private void menuItem10_Click(object sender, System.EventArgs e)
{
timer1.Interval=150;speed=150;
}
private void menuItem11_Click(object sender, System.EventArgs e)
{
timer1.Interval=200;speed=200;
}
private void menuItem12_Click(object sender, System.EventArgs e)
{
timer1.Interval=300;speed=250;
}
private void menuItem3_Click(object sender, System.EventArgs e)
{
if(pause==false)
{
pause=true;timer1.Enabled =false;menuItem3.Checked =true;
}
else
{
pause=false;timer1.Enabled =true;menuItem3.Checked =false;
}
}
//退出菜单
private void menuItem5_Click(object sender, System.EventArgs e)
{
this.Close();
}
//帮助菜单
private void menuItem14_Click(object sender, System.EventArgs e)
{
MessageBox.Show("贪食蛇游戏 v1.0.3 beta /n"+ "作者:p6 /n"+"操作方法:用小键盘8、5、4、6控制方向。","帮助",MessageBoxButtons.OK ,MessageBoxIcon.Information );
}
}
}