http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5034|回复: 0

[学生提问] 关于一个c#做的贪吃蛇代码中的错误,求大神解救

[复制链接]
发表于 2014-12-31 17:17:00 | 显示全部楼层 |阅读模式
5金钱
问题1
snake.cs
namespace tanchishe
{
    class snake
    {

        private int snakeCount//蛇的长度
        {
            get { return snakeCount; }
            set { snakeCount = value; }
        }

        public ArrayList blockList//存放块
        {
            get { return blockList; }
            set { blockList = value; }
        }

        public Point headPoint //蛇头的位置
        {
            get { return headPoint; }
            set { headPoint = value; }
        }
        private int direction = 1;//0上1右2下3左
        public int Direction
        {
            get { return direction; }
            set { direction = value; }
        }
        public void snake(Point vertex, int count)//vertex场地的起始点 //这里说错误        1        “snake”: 成员名称不能与它们的封闭类型相同       


        {
            ArrayList blocklist = new ArrayList(count);
            Point p = new Point(vertex.X + 25, vertex.Y + 25);
            for (int i = 0; i < count; i++)
            {
                Block b = new Block();
                b.Origin = p;
                b.Number = i + 1;
                blocklist.Add(b);//初始化蛇身
                if (i == count - 1)
                {
                    headPoint = p;//初始化蛇头的位置
                }
                p.X += 5;
            }
            snakeCount = count;//初始化蛇长度
        }
        public static void Growth()
        {
            Block b = new Block();
            snakeCount = snakeCount + 1;//蛇新长度  //这几个提示错误        10        非静态的字段、方法或属性。。。。。要求对象引用
            b.Number = snakeCount; //新块的序号
            switch (Direction)
            {//上
                case 0:
                    Point p = new Point(headPoint.X, headPoint.Y);
                    b.Origin = p;
                    break;
                //右
                case 1:
                    p = new Point(headPoint.X + 5, headPoint.Y);
                    b.Origin = p;
                    break;
                //下
                case 2:
                    p = new Point(headPoint.X, headPoint.Y + 5);
                    b.Origin = p;
                    break;
                //左
                case 3:
                    p = new Point(headPoint.X - 5, headPoint.Y);
                    b.Origin = p;
                    break;
            }
           blockList.Add(b);
            headPoint = b.Origin;  //这两句总提示错误        10        非静态的字段、方法或属性“tanchishe.snake.blockList.get”要求对象引用
        }
        public void Display(Graphics g)
        {//去掉蛇尾
            Block b1 = new Block();
            b1 = (Block)blockList[0];
            //取出blocklist的第一个元素给b
            blockList.Remove(b1);
            b1.UnDisplay(g);
            //蛇的每一块序号减一
            foreach (Block bb in blockList)
            {
                bb.Number--;
            }
            //添加蛇头
            Block b = new Block();
            switch (Direction)
            {
                //上
                case 0:
                    Point p = new Point(headPoint.X, headPoint.Y);
                    b.Origin = p;
                    break;
                //右
                case 1:
                    p = new Point(headPoint.X + 5, headPoint.Y);
                    b.Origin = p;
                    break;
                //下
                case 2:
                    p = new Point(headPoint.X, headPoint.Y + 5);
                    b.Origin = p;
                    break;
                //左
                case 3:
                    p = new Point(headPoint.X - 5, headPoint.Y);
                    b.Origin = p;
                    break;
            }
            b.Number = snakeCount;
            blockList.Add(b);
            headPoint = b.Origin;
            foreach (Block bb in blockList)
            {
                bb.Display(g);
            }
        }
        //改变方向
        public void TurnDirection(int newDirec)
        {
            switch (Direction)
            {
                //原方向上
                case 0:
                    if (newDirec == 3)//新方向为左
                        Direction = 3;//新方向改为左
                    else if (newDirec == 1)//新方向为右
                        Direction = 1;//将运行方向改为右
                    break;
                //原方向右
                case 1:
                    if (newDirec == 0)//新方向为上
                        Direction = 0;//新方向改为上
                    else if (newDirec == 2)//新方向为下
                        Direction = 2;//将运行方向改为左下
                    break;
                //原方向下
                case 2:
                    if (newDirec == 3)//新方向为左
                        Direction = 3;//新方向改为左
                    else if (newDirec == 1)//新方向为右
                        Direction = 1;//将运行方向改为右
                    break;
                //原方向左
                case 3:
                    if (newDirec == 0)//新方向为上
                        Direction = 0;//新方向改为上
                    else if (newDirec == 2)//新方向为下
                        Direction = 2;//将运行方向改为下
                    break;
            }
        }
        //消除蛇
        public void Undisplay(Graphics g)
        {
            foreach (Block b in blockList)
            {
                b.UnDisplay(g);
                blockList.Remove(b);
            }

        }
        //蛇碰到自身
        public bool HitSelf()
        {
            foreach (Block b in blockList)
            {
                if (b.Number != snakeCount)
                {
                    if (b.Origin.Equals(headPoint))
                    {
                        return true;
                    }
                }
            }
            return false;
        }
        public void Reset(Point vertex, int count)
        {
            blockList = new ArrayList(count);
            Point p = new Point(vertex.X + 25, vertex.Y + 25);
            for (int i = 0; i < count; i++)
            {
                Block b = new Block();
                b.Number = i + 1;
                blockList.Add(b);//初始化蛇身

                if (i == count - 1)
                {
                    headPoint = p;//初始化蛇头的位置
                }
                p.X += 5;

                snakeCount = count;//初始化蛇长度
            }

        }
    }
}


class Floor
    {
      //场地起始点
         public Point startpoint
        {
           get{return startpoint;}
            set{value=startpoint;}
        }
        private static int danwei = 5;
        private int chang = 60 * danwei;
        private int kuan = 30 * danwei;
        private Point dian;
        private snake s;
        public snake S
        {
            get { return s; }
        }
        private int defen=0;
        public int Defen
      {
        get { return defen; }
        set { defen = value; }
       }

        private Bean bean1;
       internal Bean Bean1
       {
         get{return  bean1;}
         set{value = bean1;}
       }

    public Floor(Point p)

{   startpoint=p;
    Bean bean1 = new Bean();
    bean1.Origin=new Point(startpoint.X+50,startpoint.Y+10);
    snake snake =new snake(startpoint,10);


问题2

        bean1.Origin = new Point(startpoint.X+50,startpoint.Y + 10);

}
        //场地的显示
        public void Display(Graphics g)
        {

            Pen pen1 = new Pen(Color.Red);
            g.DrawRectangle(pen1,startpoint.X,startpoint.Y,chang,kuan);


            //显示蛇
            s.Display(g);
            //判断豆是否被吃掉
            CheckBean(g);
             }
           //豆显示
           // bean1.display(g);
           //豆被吃掉
        public void CheckBean(Graphics g)
        {
            if (s.headPoint.Equals(bean1.Origin))
            {
                defen += 10;//得分增长
                DisplayBean(g);//随机生产并显示豆
                snake.Growth();//增长蛇
            }
        }
                //显示豆
                public void DisplayBean(Graphics g)
                {
                    bean1.unDisplay(g);//随即生产豆
                    RandomBean();
                        bean1.display(g);//豆显示
                }
        public void RandomBean()
        {
            Random rd=new Random();
                int x = startpoint.X + rd.Next(1,chang - 1) * 5;
                int y = startpoint.Y + rd.Next(1,kuan - 1) * 5;
                Point ran,p= new Point(x, y);
               Bean b=new Bean(ran );
        }
        //检查蛇死亡
        public bool CheckSnake()
        {
            //蛇碰到场地的边界或蛇碰到自身
            if(s.HitSelf()||s.headPoint.X==startpoint.X||s.headPoint.Y=startpoint.Y||s.headPoint.X+5=startpoint.X||s.headPoint.Y+5=startpoint.Y)
//这一句错误是         运算符“||”无法应用于“bool”和“int”类型的操作数


            {
                return true;
            }
            else
            {
                return false;
            }
        }
        public void Reset(Graphics g)
        {
            s.Undisplay(g);
            s.Reset(startpoint, 10);
        }

    }}



1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-11-24 13:34

© 2014-2021

快速回复 返回顶部 返回列表