范文健康探索娱乐情感热点
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文

java贪吃蛇(教你用java做贪吃蛇)

  java贪吃蛇(教你用java做贪吃蛇)
  要用java写贪吃蛇呢,你要掌握这几个知识点
  1、集合的应用,Arraylist。
  用来存储蛇块对象的。
  2、swing编程
  你需要绘制图形界面
  3、事件监听
  键盘监听和按钮点击事件监听
  4、线程或定时器的应用(这里我们就用线程)
  5、贪吃蛇的核心算法
  (面向对象作为java的基本功在这里就不写出来了)
  掌握了这些知识点之后,我们就可以来制作贪吃蛇了
  1、创建蛇块对象
  蛇块属性有位置位置用x,y表示,
  package snakeeat;
  public class Snakeact {
  private int x;
  private int 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;
  }
  }
  2、创建窗口
  package snakeeat;
  import javax.swing.*;
  public class Snake extends JFrame{
  public Snake (){
  Snakewin win=new Snakewin();
  add(win);
  setTitle("贪吃蛇");
  setSize (435,390);
  setLocation(200,200);
  setVisible(true);
  }
  public static void main(String[] args) {
  new Snake();
  }
  }
  3、绘制面板(很多逻辑方法都在这个类里)
  package snakeeat;
  import javax.swing.*;
  import java.awt.*;
  import java.awt.event.*;
  import java.util.*;
  import java.util.List;
  public class Snakewin extends JPanel implements ActionListener, KeyListener, Runnable {
  JButton newGame, stopGame;//开始和结束的按钮
  int score = 0;//分数
  int speed = 1;//蛇运动的速度
  int rx = 0;//食物的X坐标
  int ry = 0;
  int num1 = 0, num2 = 0;
  int temp = 0;//判断方向
  boolean start = false;//判断游戏是否开始
  JLabel lable;
  List<Snakeact> list = new ArrayList<Snakeact>();
  Random r = new Random();
  JDialog die = new JDialog();
  JButton ok;
  //构造方法,初始化各种值
  public Snakewin() {
  newGame = new JButton("开始");
  stopGame = new JButton("结束");
  this.setLayout(new FlowLayout(FlowLayout.LEFT));
  newGame.addActionListener(this);
  stopGame.addActionListener(this);
  this.addKeyListener(this);
  this.add(newGame);
  this.add(stopGame);
  die.setLayout(new GridLayout(2, 1));
  ok = new JButton("继续");
  ok.addActionListener(this);
  die.setSize(200, 200);
  die.setLocation(400, 300);
  die.add(ok);
  die.setVisible(false);
  if (start) {
  lable = new JLabel("您的分数是:" + score);
  die.add(lable);
  }
  }
  //绘制图形界面和蛇
  public void paintComponent(Graphics g) {
  super.paintComponent(g);
  g.drawRect(10, 40, 400, 300);
  g.drawString("分数:" + score, 150, 20);
  g.drawString("速度:" + speed, 150, 35);
  g.setColor(new Color(0, 255, 0));
  if (start) {
  g.fillRect(10 + rx * 10, 40 + ry * 10, 10, 10);
  g.setColor(new Color(255, 0, 0));
  for (int i = 0; i < list.size(); i++) {
  g.fillRect(10 + list.get(i).getX() * 10, 40 + list.get(i).getY() * 10, 10, 10);
  }
  eat();
  }
  }
  //吃食物的方法
  public void eat() {
  if (list.size() != 0) {
  if (list.get(0).getX() == rx && list.get(0).getY() == ry) {
  score++;
  if (score % 10 == 0) {
  speed++;
  }
  rx = r.nextInt(40);
  ry = r.nextInt(30);
  Snakeact tempAct = new Snakeact();
  tempAct.setX(list.get(list.size() - 1).getX());
  tempAct.setY(list.get(list.size() - 1).getY());
  list.add(tempAct);
  }
  }
  }
  //蛇身移动方法
  public void sonMove() {
  Snakeact tempAct = new Snakeact();
  for (int i = 0; i < list.size(); i++) {
  if (i == 1) {
  list.get(i).setX(list.get(0).getX());
  list.get(i).setY(list.get(0).getY());
  } else if (i > 1) {
  tempAct = list.get(i - 1);
  list.set(i - 1, list.get(i));
  list.set(i, tempAct);
  }
  }
  }
  //蛇头移动方法
  public void move(int x, int y) {
  if (list.size() != 0) {
  if (minYes(x, y)) {
  sonMove();
  list.get(0).setX(list.get(0).getX() + x);
  list.get(0).setY(list.get(0).getY() + y);
  } else {
  die.setVisible(true);
  }
  }
  }
  //按钮事件监听
  public void actionPerformed(ActionEvent e) {
  if (e.getSource() == newGame) {
  newGame.setEnabled(false);
  start = true;
  rx = r.nextInt(40);
  ry = r.nextInt(30);
  Snakeact tempAct = new Snakeact();
  tempAct.setX(20);
  tempAct.setY(15);
  list.add(tempAct);
  requestFocus(true);
  Thread mThread = new Thread(this);
  mThread.start();
  repaint();
  }
  if (e.getSource() == stopGame) {
  System.exit(0);
  }
  if (e.getSource() == ok) {
  list.clear();
  newGame.setEnabled(true);
  die.setVisible(false);
  score = 0;
  speed = 1;
  }
  }
  public boolean minYes(int x, int y) {
  if (list.size() != 0) {
  if (!maxYes(list.get(0).getX() + x, list.get(0).getY() + y)) {
  return false;
  }
  }
  return true;
  }
  //判断是否出界
  public boolean maxYes(int x, int y) {
  if (x < 0 || x >= 40 || y < 0 || y >= 30) {
  return false;
  }
  for (int i = 0; i < list.size(); i++) {
  if (i > 1 && list.get(i).getX() == list.get(0).getX() && list.get(i).getY() == list.get(0).getY()) {
  return false;
  }
  }
  return true;
  }
  //键盘敲击事件监听
  public void keyPressed(KeyEvent e) {
  if (start) {
  switch (e.getKeyCode()) {
  case KeyEvent.VK_UP:
  if (temp != 2) {
  move(0, -1);
  temp = 1;
  }
  repaint();
  break;
  case KeyEvent.VK_DOWN:
  if (temp != 1) {
  move(0, 1);
  temp = 2;
  }
  repaint();
  break;
  case KeyEvent.VK_LEFT:
  if (temp != 4) {
  move(-1, 0);
  temp = 3;
  }
  repaint();
  break;
  case KeyEvent.VK_RIGHT:
  if (temp != 3) {
  move(1, 0);
  temp = 4;
  }
  repaint();
  break;
  default:
  break;
  }
  }
  }
  @Override
  public void keyTyped(KeyEvent e) {
  // TODO Auto-generated method stub
  }
  @Override
  public void keyReleased(KeyEvent e) {
  }
  //线程的run方法
  public void run() {
  while (start) {
  switch (temp) {
  case 1:
  move(0, -1);
  break;
  case 2:
  move(0, 1);
  break;
  case 3:
  move(-1, 0);
  break;
  case 4:
  move(1, 0);
  break;
  default:
  move(1, 0);
  break;
  }
  repaint();
  try {
  Thread.sleep(600 / speed);
  } catch (InterruptedException e) {
  // TODO Auto-generated catch block
  e.printStackTrace();
  }
  }
  }
  }
  每一点都是一个类哦
  效果图
  有问题可以加qq群708653884交流哦

高中学习(高中应该怎样学习)高中学习(高中应该怎样学习)大家好,这里是高考分享君。今天给家长朋友们带来的是高中的各科学习方法,数学,语文,英语,历史,政治,地理。今天先讲这几科。家长朋友们如果需要更多高中学习旅游计划(一个人说走就走的27个旅行清单)旅游计划(一个人说走就走的27个旅行清单)世界那么大,总有一些地方,我们想去却终未踏足。虽然真正实现的可真是不多,但旅行清单还是要列的,因为,未来一定是美好的,不管是旅行还是生活,个人工作总结开头怎么写(个人年终工作总结格式开头结尾)个人工作总结开头怎么写(个人年终工作总结格式开头结尾)总结一般是由标题,正文,署名和日期几个部分构成的。标题,即总结的名称。标明总结的单位,期限和性质。正文一般又分为三个部分开头,水镜先生司马徽(水镜先生司马徽为什么不自己出山)水镜先生司马徽(水镜先生司马徽为什么不自己出山)不读三国,不识英雄!大家好,这里是卧仔历史上有很多隐士,他们身怀经天纬地道术但却不为帝王所用,宁愿隐居在山林中和飞禽走兽为伴,坐看天海明威吞枪自杀(娶个毁三代的女人是什么感受?)海明威吞枪自杀(娶个毁三代的女人是什么感受?)海明威一个作家最好的早期训练是什么?海明威回答说不愉快的童年。张爱玲传的作者于斌说这肯定不是绝对真理。假如可以将童年的时限大大放宽,或什么避孕方法最好(最可靠的避孕方式是什么)目前,年轻人面临的压力仍在增加。很多夫妻在生了第二个孩子后通常不会选择生三个孩子,因为两个孩子已经让他们忙不过来了。生第三个孩子会给生活带来经济压力和生活压力很大,因此,避孕措施在世界上最大的蛇(世界上最大的蛇有多大?)世界上最大的蛇(世界上最大的蛇有多大?)世界上最大的蛇有多大有道是一朝被蛇咬十年怕井绳,人类对于蛇类的恐惧已经印在了骨子里,许多人甚至见到蛇的图片就会被吓得发抖。之所以许多人对于蛇珍珠奶茶做法(焦糖珍珠椰果奶茶的家常做法)珍珠奶茶做法(焦糖珍珠椰果奶茶的家常做法)By自由鱼鱼用料牛奶2000毫升印度红茶叶碎25克白糖200克开水500毫升珍珠适量椰果肉适量做法步骤1白糖和茶叶碎放干净的锅中小火翻炒。东京电力(东京电力跟全球作对,日本民众快崩溃了)东京电力(东京电力跟全球作对,日本民众快崩溃了)在今年年初日本方面发布了一则通知,称他们将要把核电站的废水排放到海洋之中。这一通知发布之后引起了社会各界的关注,大部分国家当然是持反烤羊排家庭做法(家常烤羊排的做法没有那么多讲究)烤羊排家庭做法(家常烤羊排的做法没有那么多讲究)烤羊排食谱只需一个平底锅和一些黄油大蒜和香草,您就可以制作出美味无比的羊排。就是这样。可选择干腌步骤对肉进行预调味并干燥外部以加快褐大排的做法(大排的经典做法)大排的做法(大排的经典做法)排骨是我们平时最喜欢的菜,尤其是大排,因为上面的肉最多,而且没有肥肉,所以深受大家的喜爱。瘦而不肥的大排,吃到嘴里鲜嫩多汁。大排一般的做法就是炸和卤。今
元音字母有哪些(元音音标所对应的字母发音)元音字母有哪些(元音音标所对应的字母发音)元音音标所对应的字母发音单元音ieimebesheeeiseesleepdeepfeetneedeaireadeatmealseatiif周一到周日的英文(英语星期一到星期天的单词怎么写?)周一到周日的英文(英语星期一到星期天的单词怎么写?)京汤姆客教育咨询有限公司官方帐号星期一Monday(英mnde美mnde)记忆忙。记忆方法音头相近忙,周一是工作或念书的第一天,篱笆网装修(篱笆网装修迎合绝大多数业主需求招商宝)篱笆网装修(篱笆网装修迎合绝大多数业主需求招商宝)你们了解过篱笆网装修吗?许多客户在选择篱笆网装修之后都反映效果非常好,工程师会为客户提供各种各样的配色方案,保证你有不一样的观感,大鼻子情圣(大鼻子情圣真当自己情圣?)大鼻子情圣(大鼻子情圣真当自己情圣?)年少轻狂时可以迷途知返,老年失格后又将何去何从?作者雪丸子编审咖喱情圣不好当。当地时间2月23日,曾在大鼻子情圣一片中出演男主角的法国演员杰拉小小说论坛(中国小小说之乡擦亮惠城文化品牌)小小说论坛(中国小小说之乡擦亮惠城文化品牌)惠州市小小说大课堂本着以老带新,教学相长的原则,面向全市小小说爱好者普及小小说写作知识。惠州市和惠城区小小说学会成立12年来,成绩斐然,白话易经(易经白话解说,南怀瑾)白话易经(易经白话解说,南怀瑾)易经概述序言易经,是中国文化古老的典籍。历代正统派的学者,用许多不同的文字赞扬它,大致说来,推崇它为群经之首,致予无上的敬意。相反的,认为仅是古代的南怀瑾舍利子(南怀瑾的一盆舍利子令人想到的)南怀瑾舍利子(南怀瑾的一盆舍利子令人想到的)光七彩舍利就无数,还有完整的舍骨舍利!这是据记载继鸠摩罗什之后有舍骨舍利的唯一一人!这是某热心网友看到南怀瑾舍利子图片发出激动的赞叹。南五年级上册语文第一课白鹭(16年级上册生字识字认字)五年级上册语文第一课白鹭(16年级上册生字识字认字)一年级金木水火土y一(一个)(一人)(一只)r二(二手)(二月)(二人)sn三(三天)(三个)(三年)shn上(上下)(上车)(乳山地震最新消息(威海乳山发生3。3级左右地震)乳山地震最新消息(威海乳山发生3。3级左右地震)乳山市距震中约14。9千米,文登市距震中约45。3千米今天下午14时,山东省威海市乳山市附近发生3。3级左右地震齐鲁网济南9月16日最新地震(新疆巴音郭楞州和静县发生3。4级地震)最新地震(新疆巴音郭楞州和静县发生3。4级地震)速报参数速报参数据中国地震台网正式测定,8月11日6时39分在新疆巴音郭楞州和静县发生3。4级地震,震源深度10千米,震中位于北纬4关于学习的成语(学字成语大全)关于学习的成语(学字成语大全)人的一辈子都是在学习,但是你们知道吗?学习在任何时候都是非常重要1,物竞天择,适者生存,我们只能社会,在适应过程中我们一直在学习,今天小编为大家总结关