多语言展示
当前在线:785今日阅读:75今日分享:44

C#制作贪吃蛇游戏(下)

C#贪吃蛇游戏设计(代码部分)
工具/原料

以Microsoft Visual C# 2010 Express为例

方法/步骤
1

双击窗体(注意不是双击控件),加入代码:        public class Di        {            public static int D;            public static int s = 2;        }        void Add_food()        {            Label label = new Label();            label.Name = 'Lab' + Di.s;            label.BackColor = System.Drawing.Color.Red;            label.Size = new System.Drawing.Size(10, 10);            label.Margin = new System.Windows.Forms.Padding(0);            label.ForeColor = System.Drawing.Color.Red;            label.AutoSize = false;            label.TextAlign = System.Drawing.ContentAlignment.MiddleCenter;            Random rd = new Random();        tag1:            label.Location = new System.Drawing.Point(rd.Next(0, 30) * 10, rd.Next(0, 30) * 10);            for (int i = 1; i < Di.s; i++)            {                Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; if (label.Location == lo.Location) goto tag1;             }            this.Controls.Add(label);            label.SendToBack();            panel1.SendToBack();        }如图所示:

2

双击开始按钮,加入代码:            Add_food();            button1.Enabled = false;如图所示:

3

双击timer1控件,加入代码:            if (Di.D == 1) { System.Windows.Forms.SendKeys.Send('{DOWN}'); return; };            if (Di.D == 2) { System.Windows.Forms.SendKeys.Send('{UP}'); return; };            if (Di.D == 3) { System.Windows.Forms.SendKeys.Send('{LEFT}'); return; };            if (Di.D == 4) { System.Windows.Forms.SendKeys.Send('{RIGHT}'); return; };如图所示:

4

单击Form1,在属性中单击事件,找到KeyDown,双击,加入代码:            if (e.KeyCode == Keys.Down && Di.D != 2)            {                timer1.Enabled = false;                Di.D = 1;                Label lb = (Label)this.Controls.Find('Lab' + Di.s, true)[0];                Label lbl = (Label)this.Controls.Find('Lab' + (Di.s - 1), true)[0];                Point[,] Lo = new Point[101, 101];                for (int i = 1; i <= Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; Lo[i, i] = new Point(lo.Location.X, lo.Location.Y);                }                Label le = new Label();                le.Visible = false;                if (e.KeyCode == Keys.Down && Di.s > 2 && lbl.BackColor != System.Drawing.Color.Red && Lab1.Location.Y != 290)                {                    for (int i = 2; i < Di.s; i++)                    {                        Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; lo.Location = Lo[i - 1, i - 1];                    }                }                if (lb.Location == new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y + 10))                {                    lb.BackColor = System.Drawing.Color.Black;                    le.Location = new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y);                    Lab1.Location = new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y + 10);                    lb.Location = le.Location;                    this.Controls.Remove(le);                    Di.s++;                    Add_food();                    timer1.Enabled = true;                    return;                }                for (int i = 1; i < Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; if (lo.Location == new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y + 10)) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; }; ;                }                if (e.KeyCode == Keys.Down && Lab1.Location.Y == 290) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; };                Lab1.Top = Lab1.Top + 10;                timer1.Enabled = true;            }            if (e.KeyCode == Keys.Up && Di.D != 1)            {                timer1.Enabled = false;                Di.D = 2;                Label lb = (Label)this.Controls.Find('Lab' + Di.s, true)[0];                Label lbl = (Label)this.Controls.Find('Lab' + (Di.s - 1), true)[0];                Point[,] Lo = new Point[101, 101];                for (int i = 1; i <= Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; Lo[i, i] = new Point(lo.Location.X, lo.Location.Y);                }                Label le = new Label();                le.Visible = false;                if (e.KeyCode == Keys.Up && Di.s > 2 && lbl.BackColor != System.Drawing.Color.Red && Lab1.Location.Y != 0)                {                    for (int i = 2; i < Di.s; i++)                    {                        Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; lo.Location = Lo[i - 1, i - 1];                    }                }                if (lb.Location == new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y - 10))                {                    lb.BackColor = System.Drawing.Color.Black;                    le.Location = new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y);                    Lab1.Location = new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y - 10);                    lb.Location = le.Location;                    this.Controls.Remove(le);                    Di.s++;                    Add_food();                    timer1.Enabled = true;                    return;                }                for (int i = 1; i < Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; if (lo.Location == new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y - 10)) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; }; ;                }                if (e.KeyCode == Keys.Up && Lab1.Location.Y == 0) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; };                Lab1.Top = Lab1.Top - 10;                timer1.Enabled = true;            }            if (e.KeyCode == Keys.Left && Di.D != 4)            {                timer1.Enabled = false;                Di.D = 3;                Label lb = (Label)this.Controls.Find('Lab' + Di.s, true)[0];                Label lbl = (Label)this.Controls.Find('Lab' + (Di.s - 1), true)[0];                Point[,] Lo = new Point[101, 101];                for (int i = 1; i <= Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; Lo[i, i] = new Point(lo.Location.X, lo.Location.Y);                }                Label le = new Label();                le.Visible = false;                if (e.KeyCode == Keys.Left && Di.s > 2 && lbl.BackColor != System.Drawing.Color.Red && Lab1.Location.X != 0)                {                    for (int i = 2; i < Di.s; i++)                    {                        Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; lo.Location = Lo[i - 1, i - 1];                    }                }                if (lb.Location == new System.Drawing.Point(Lab1.Location.X - 10, Lab1.Location.Y))                {                    lb.BackColor = System.Drawing.Color.Black;                    le.Location = new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y);                    Lab1.Location = new System.Drawing.Point(Lab1.Location.X - 10, Lab1.Location.Y);                    lb.Location = le.Location;                    this.Controls.Remove(le);                    Di.s++;                    Add_food();                    timer1.Enabled = true;                    return;                }                for (int i = 1; i < Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; if (lo.Location == new System.Drawing.Point(Lab1.Location.X - 10, Lab1.Location.Y)) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; }; ;                }                if (e.KeyCode == Keys.Left && Lab1.Location.X == 0) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; };                Lab1.Left = Lab1.Left - 10;                timer1.Enabled = true;            }            if (e.KeyCode == Keys.Right && Di.D != 3)            {                timer1.Enabled = false;                Di.D = 4;                Label lb = (Label)this.Controls.Find('Lab' + Di.s, true)[0];                Label lbl = (Label)this.Controls.Find('Lab' + (Di.s - 1), true)[0];                Point[,] Lo = new Point[101, 101];                for (int i = 1; i <= Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; Lo[i, i] = new Point(lo.Location.X, lo.Location.Y);                }                Label le = new Label();                le.Visible = false;                if (e.KeyCode == Keys.Right && Di.s > 2 && lbl.BackColor != System.Drawing.Color.Red && Lab1.Location.X != 290)                {                    for (int i = 2; i < Di.s; i++)                    {                        Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; lo.Location = Lo[i - 1, i - 1];                    }                }                if (lb.Location == new System.Drawing.Point(Lab1.Location.X + 10, Lab1.Location.Y))                {                    lb.BackColor = System.Drawing.Color.Black;                    le.Location = new System.Drawing.Point(Lab1.Location.X, Lab1.Location.Y);                    Lab1.Location = new System.Drawing.Point(Lab1.Location.X + 10, Lab1.Location.Y);                    lb.Location = le.Location;                    this.Controls.Remove(le);                    Di.s++;                    Add_food();                    timer1.Enabled = true;                    return;                }                for (int i = 1; i < Di.s; i++)                {                    Label lo = (Label)this.Controls.Find('Lab' + i, true)[0]; if (lo.Location == new System.Drawing.Point(Lab1.Location.X + 10, Lab1.Location.Y)) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; }; ;                }                if (e.KeyCode == Keys.Right && Lab1.Location.X == 290) { timer1.Enabled = false; MessageBox.Show('游戏结束!', '提示'); return; };                Lab1.Left = Lab1.Left + 10;                timer1.Enabled = true;            }如图所示:

5

至此,所有工作完成,按F5即可查看效果,如下图所示:

推荐信息