java利用集合实现贪吃蛇游戏.doc_第1页
java利用集合实现贪吃蛇游戏.doc_第2页
java利用集合实现贪吃蛇游戏.doc_第3页
java利用集合实现贪吃蛇游戏.doc_第4页
java利用集合实现贪吃蛇游戏.doc_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Node:public class Node private int x;private int y;Overridepublic int hashCode() return 21*x+33*y;Overridepublic boolean equals(Object obj) if(!(obj instanceof Node)throw new RuntimeException();Node node =(Node)obj; return this.x=node.x & this.y=node.y;public int getX() return x;public void setX(int x) this.x = x;public int getY() return y;public void setY(int y) this.y = y;public Node(int x, int y) super();this.x = x;this.y = y;public Node()Overridepublic String toString() return this.x+,+this.y;WormPanelimport java.util.ArrayList;import java.util.HashSet;import java.util.Iterator;import java.util.LinkedList;import java.util.Scanner;public class WormPanel private static final String UP=u; private static final String DOWN=d; private static final String LEFT=l; private static final String RIGHT=r; private static LinkedList she=new LinkedList(); private static HashSet food=new HashSet(); /主方法 public static void main(String args) WormPanel.startGame(); public static void startGame() Scanner scan=new Scanner(System.in); System.out.println(请输入要得到的第一条蛇的长度(210):); int sheLang=scan.nextInt(); System.out.println(请输入开始事物的个数(210):); int foodNums=scan.nextInt(); WormPanel.getFirstShe(sheLang);/得到蛇 WormPanel.getFirstFood(foodNums);/得到食物 System.out.println(请输入【u,d,l,y】代表【上,下,左,右】,【exit】结束); WormPanel.printWorm(she, food); String str=WormPanel.She.getFirstFangxiang(she);/根据第一条蛇得到方向 WormPanel.She.yidong2(str); /蛇类 static class She private static String fangx; static void yidong2(String str)/外部调用的移动蛇函数 boolean b=true; while(b) Scanner scan=new Scanner(System.in); String in=scan.nextLine(); if(in.equals(exit) b=false; System.out.println(结束了); else if(in.equals(+ ) yidong(); WormPanel.printWorm(she, food); else if(check(in) System.out.println(不能反向爬行!); else fangx=in; yidong(); WormPanel.printWorm(she, food); private static void yidong()/移动蛇函数 if(fangx.equals(UP) Node n=she.getFirst(); Node xin=new Node(n.getX()-1,n.getY(); int x=n.getX()-1; if(x7) System.out.println(不能穿墙哦!); else if(food.contains(xin) food.remove(xin); she.addFirst(xin); if(food.size()=0) System.out.println(you win,no food!); else if(food.size()=0) System.out.println(you win,no food!); she.addFirst(xin); she.removeLast(); else if(fangx.equals(LEFT) Node n=she.getFirst(); Node xin=new Node(n.getX(),n.getY()-1); int y=n.getY()-1; if(y31) System.out.println(不能穿墙哦!); else if(food.contains(xin) food.remove(xin); she.addFirst(xin); if(food.size()=0) System.out.println(you win,no food!); else if(food.size()=0) System.out.println(you win,no food!); she.addFirst(xin); she.removeLast(); else System.out.println(请输入【u,d,l,y】代表【上,下,左,右】,【exit】结束); static boolean check(String str)/判断是不是方向的,如果是想反得输出true if(fangx.equals(RIGHT)&str.equals(LEFT)|(fangx.equals(LEFT)&str.equals(RIGHT)| (fangx.equals(UP)&str.equals(DOWN)|(fangx.equals(DOWN)&str.equals(UP) return true; return false; static String getFirstFangxiang(LinkedList she1)/根据初始的蛇得到方向 Node n=she1.removeFirst(); Node n2=she1.removeFirst(); int x1=n.getX(); int y1=n.getY(); int x2=n2.getX(); int y2=n2.getY(); she.addFirst(n2); she.addFirst(n); if(x1=x2&y1y2) fangx=RIGHT; else if(x1=x2&y1x2&y1=y2) fangx=DOWN; else fangx=UP; return fangx; public static void getFirstShe(int k)/得到第一条蛇的函数 int x=(int)(2+8*Math.random(); int y=(int)(2+(28-k)*Math.random(); while(she.size()!=k) she.addFirst(new Node(x,y+); public static void getFirstFood(int k)/得到开始食物的函数 while(food.size()!=k) int x=(int)(2+7*Math.random(); int y=(int)(2+28*Math.random(); Node nn=new Node(x,y); if(!she.contains(nn) food.add(nn); public static void printWorm(LinkedList she1,HashSet food1)/打印面板函数 ArrayList list=new ArrayList(); for(int i=0;i320;i+) list.add( ); Iterator it=food1.iterator(); while(it.hasNext() Node n=it.next(); int k=32*(n.getX()-1)+n.getY(); list.set(k, 0); Iterator it2=she1.iterator(); Node z=it2.next(); int f=32*(z.getX()-1)+z.getY(); list.set(f, ); while(it2.hasNext() Node n=it2.next(); int k=32*(n.getX()-1)+n.getY(); list.set(k, *); for(int i=1;ilist.size()+1;i+) i

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论