回 帖 发 新 帖 刷新版面

主题:我用C#写的贪食蛇,没有复杂算法与结构,很基础的知识。

这个是花了我2个通宵写的,

代码有点多吧 写了900多行,完全是自己想的,除了图形重绘参考别人的例子。。

里面所有的东西,我完全没有看过别的代码自己写的。

是写的不好,不过这真的是很基础很基础。。。 


就那个所谓的,面向的对象的吧。。。


回复列表 (共30个回复)

21 楼

#region 画出信息
        public void DrawMessage(string strMsg, Graphics g)
        {
            Font stringFont = new Font("Arial", 20);
            float x = (420 - (g.MeasureString(strMsg, stringFont).Width)) / 2;

            float y = (420 - (g.MeasureString(strMsg, stringFont).Height)) / 2;
            g.DrawString(
                    strMsg,
                    stringFont,
                    Pens.Azure.Brush,
                    new PointF(x, y));
        }
        #endregion

        #region 暂停/继续
        public void IsPause()
        {
            try
            {
                if (snakelist.Count >= 3)
                {
                    DrawMessage("Pause", this.CreateGraphics());
                    if (IsStart == false)
                    {
                        timer.Stop();
                        IsStart = true;
                    }
                    else
                    {
                        timer.Start();
                        IsStart = false;
                    }
                }
                this.Invalidate();
                this.Update();
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
        #endregion

22 楼

#region 加分
        public void AddScore()
        {
            int n = Int32.Parse(this.num_lable.Text);
            int s = n + 10;
            this.num_lable.Text = s.ToString();

        }
        #endregion

        #region 设置等级
        public void Setlevel()
        {
            int x =snakelist.Count-3;
            if (x==9)
            {
                this.lnum_label.Text = "1";
                timer.Interval = 300;
            }else
                if (x==19)
                {
                    timer.Interval = 250;
                    this.lnum_label.Text = "2";
                }
                else
                    if (x == 29)
                    {
                        timer.Interval = 200;
                        this.lnum_label.Text = "3";
                    }
                    else
                        if (x == 39)
                        {
                            timer.Interval = 150;
                            this.lnum_label.Text = "4";
                        }

23 楼

else
                            if (x == 49)
                            {
                                timer.Interval = 135;
                                this.lnum_label.Text = "5";
                            }
                            else
                                if (x == 59)
                                {
                                    timer.Interval = 120;
                                    this.lnum_label.Text = "6";
                                }
                                else
                                    if (x == 69)
                                    {
                                        timer.Interval = 105;
                                        this.lnum_label.Text = "7";
                                    }
                                    else
                                        if (x == 79)
                                        {
                                            timer.Interval = 90;
                                            this.lnum_label.Text = "8";
                                        }
                                        else
                                            if (x == 89)
                                            {
                                                timer.Interval = 70;
                                                this.lnum_label.Text = "9";
                                            }
                                            else
                                                if (x == 99)
                                                {
                                                    timer.Interval = 50;
                                                    this.lnum_label.Text = "10";
                                                }
        }
        #endregion

    }
}

24 楼


看看

25 楼

厉害啊!呵呵,我在VS2008下运行了,那个Score,Level没有值显示,也不改变值,我是新手,

26 楼

学习。

27 楼

想问下楼主,again和isagain分别是什么?还有,楼主能不能把设计思想说一下,以方便我们这些菜鸟学习?

28 楼

睿智汇海学生前三个月课程项目作品: http://www.itcast.net/course/detail/2740,大家也可以下载了切磋一下

29 楼


谢谢 回复,,

也许是字体的问题吧...

30 楼

[quote]想问下楼主,again和isagain分别是什么?还有,楼主能不能把设计思想说一下,以方便我们这些菜鸟学习?[/quote]

设计思想就比较单纯, 你按常理去想一个物体的移动。

那个蛇移动,画出一个蛇移动后的画面就是X Y  加减。

移动新坐标的X Y 坐标画出蛇, 原来的 X Y 就删除, 上下左右基本都是这样。。

吃到食物的时候把它加到最后,因为蛇头不能被代替嘛。哈哈

不过现在让我重写的话,我会写得更好了。。。

again 就是 上下左右键 按到哪个 , 我自定义而已。

isagain 当你按下一个键的时候 ,在按别的键的一个判断,具体当你去写你就明白

我来回复

您尚未登录,请登录后再回复。点此登录或注册