贪吃蛇游戏演示电气工程陈欢主要内容1.系统简介2.功能设计3.界面设计4.代码实现系统简介本系统提供了贪吃蛇游戏中常见的基本功能,包括游戏的开始、暂停、继续等操作设置,玩家可以通过键盘控制游戏区中贪吃蛇的运动方向,当贪吃蛇撞到墙或者自身相交时,则结束游戏,否则当贪吃蛇吃到系统随机设置的食物时,则蛇身加长,随之玩家分数增加。功能设计功能简介:主要功能:(1)其中游戏的主操作键是↓↑→←。可以通过键盘来进行操作,通过“空格键”实现暂停(2)游戏的界面是基于单文档的,但单文档的的窗口框架不会改变,也没有多余的工具栏选项。(3)在游戏界面的右上方有一个显示当前得分的对话框,方便用户来了解了解自己的战绩。操作功能:(4)随着得分的不断增加,贪吃蛇的移动速度会变快,增加了游戏的难度功能结构图:游戏主界面游戏开始,食物出现在任意位置蛇碰到墙或者自身游戏过程中想要暂停游戏稍后进行游戏操作:向上移动向下移动向左移动向右移动游戏结束单机“暂停游戏”暂停游戏单击“继续游戏”继续游戏游戏界面设计游戏界面设计蛇的移动原理把蛇身体的每一块看成一个对象(对象存储该块的坐标和相关信息),作为节点存储在线性链表中,再设置一个变量标志蛇的方向(通过按键可以改变)。插入一个头节点,删除一个尾节点就可以了,新插入的头节点位置根据蛇当前的方向决定蛇身的绘制代码publicvoidmoving(){Snakecurrent=snakeList.first;switch(direction){case0:snakeList.addFirstSnake(current.x-1,current.y);break;case1:snakeList.addFirstSnake(current.x+1,current.y);break;case2:snakeList.addFirstSnake(current.x,current.y+1);break;case3:snakeList.add(current.x,current.y-1);break;}isOver();if(eating(current)==0){Snakenow=null;while(current.next!=null){now=current;current=current.next;}now.next=null;current=null;}repaint();食物的产生食物是随机出现产生的,但食物产生的位置又会影响游戏的运行:食物产生在蛇的身体或者在边界外。需要判断食物是否出现在蛇的身体内部,所以每次产生的食物的坐标都要与蛇的身体的坐标进行比较。使用Random随机产生一个供蛇吃的食物如果该目标恰巧与蛇身重合,则重新产生一个食物的产生//生产贪食蛇食物publicvoidcreateApple(){intx,y;do{x=(int)(Math.random()*20)+1;y=(int)(Math.random()*20)+1;//Snakecurrent=snakeList.findSnake(x,y);}while(snakeList.findSnake(x,y)==1);//不可以在贪食蛇身体上生产appleX=x;appleY=y;}判断规则1每一次蛇头的移动都会引起相应的蛇的坐标的移动,看蛇头的的坐标和食物的坐标是否相等来判断蛇是否吃到食物publicinteating(Snakes){if(s.x==appleX&&s.y==appleY){score+=10;createApple();//再次随机生成食物return1;}return0;}判断规则2判断游戏是否结束。撞墙了或者撞到自己了publicvoidisOver(){Snakecur=snakeList.first;if(cur.x==0||cur.x==21||cur.y==0||cur.y==21||isSelf()==1){//调用了撞到自己的方法JOptionPane.showMessageDialog(null,游戏结束!);//显示提示信息newGame();//又重新生成新的贪吃蛇createApple();//新的苹果direction=2;score=0;//初始化分数}}判断规则3判断是否撞到自己publicintisSelf(){Snakecur=snakeList.first;//头结点Snakefirst=cur;cur=cur.next;//cur的下一级指针while(cur!=null){if(first.x==cur.x&&first.y==cur.y){return1;}else{cur=cur.next;}}return0;}谢谢各位!