java贪吃蛇求一个java的贪吃蛇程序(打包),发我

java贪吃蛇  时间:2021-07-10  阅读:()

求贪吃蛇JAVA代码

import?java.awt.Color;?? import?java.awt.Graphics;?? import?java.awt.Graphics2D;?? import?java.awt.Rectangle;?? import?java.awt.event.KeyAdapter;?? import?java.awt.event.KeyEvent;?? import?java.awt.image.BufferedImage;?? import?java.util.ArrayList;?? import?java.util.List;?? import?javax.swing.JFrame;?? public?class?InterFace?extends?JFrame?{?? ????public?static?final?int?WIDTH?=?800,?HEIGHT?=?600,?SLEEPTIME?=?20,?L?=?1,R?=?2,?U?=?3,?D?=?4;?? ????BufferedImage?offersetImage=?new?BufferedImage(WIDTH,?HEIGHT,BufferedImage.TYPE_3BYTE_BGR);;?? ????Rectangle?rect?=?new?Rectangle(20,?40,?15?*?50,?15?*?35);?? ????Snake?snake;?? ????Node?node;?? ????public?InterFace()?{?? ????????snake?=?new?Snake(this);?? ????????createNode();?? ????????this.setBounds(100,?100,?WIDTH,?HEIGHT);?? ????????this.addKeyListener(new?KeyAdapter()?{?? ????????????public?void?keyPressed(KeyEvent?arg0)?{?? ????????????????System.out.println(arg0.getKeyCode());?? ????????????????switch?(arg0.getKeyCode())?{?? ????????????????case?KeyEvent.VK_LEFT:?? ????????????????????snake.dir?=?L;?? ????????????????????break;?? ????????????????case?KeyEvent.VK_RIGHT:?? ????????????????????snake.dir?=?R;?? ????????????????????break;?? ????????????????case?KeyEvent.VK_UP:?? ????????????????????snake.dir?=?U;?? ????????????????????break;?? ????????????????case?KeyEvent.VK_DOWN:?? ????????????????????snake.dir?=?D;?? ????????????????}?? ????????????}?? ????????});?? ????????this.setTitle("贪吃蛇?0.1???By?:?Easy");?? ????????this.setDefaultCloseOperation(EXIT_ON_CLOSE);?? ????????this.setVisible(true);?? ????????new?Thread(new?ThreadUpadte()).start();?? ????}?? ????public?void?paint(Graphics?g)?{?? ????????Graphics2D?g2d?=?(Graphics2D)?offersetImage.getGraphics();?? ????????g2d.setColor(Color.white);?? ????????g2d.fillRect(0,?0,?WIDTH,?HEIGHT);?? ????????g2d.setColor(Color.black);?? ????????g2d.drawRect(rect.x,?rect.y,?rect.width,?rect.height);?? ????????if?(snake.hit(node))?{?? ????????????createNode();?? ????????}?? ????????snake.draw(g2d);?? ????????node.draw(g2d);?? ????????g.drawImage(offersetImage,?0,?0,?null);?? ????}?? ????class?ThreadUpadte?implements?Runnable?{?? ????????public?void?run()?{?? ????????????while?(true)?{?? ????????????????try?{?? ????????????????????Thread.sleep(SLEEPTIME);?? ????????????????????repaint();?? ????????????????}?catch?(InterruptedException?e)?{?? ????????????????????e.printStackTrace();?? ????????????????}?? ????????????}?? ????????}?? ????}?? ????public?void?createNode()?{?? ????????int?x?=?(int)?(Math.random()?*?650)?+?50,y?=?(int)?(Math.random()?*?500)?+?50;?? ????????Color?color?=?Color.blue;?? ????????node?=?new?Node(x,?y,?color);?? ????}?? ????public?static?void?main(String?args[])?{?? ????????new?InterFace();?? ????}?? }?? class?Node?{?? ????int?x,?y,?width?=?15,?height?=?15;?? ????Color?color;?? ????public?Node(int?x,?int?y,?Color?color)?{?? ????????this(x,?y);?? ????????this.color?=?color;?? ????}?? ????public?Node(int?x,?int?y)?{?? ????????this.x?=?x;?? ????????this.y?=?y;?? ????????this.color?=?color.black;?? ????}?? ????public?void?draw(Graphics2D?g2d)?{?? ????????g2d.setColor(color);?? ????????g2d.drawRect(x,?y,?width,?height);?? ????}?? ????public?Rectangle?getRect()?{?? ????????return?new?Rectangle(x,?y,?width,?height);?? ????}?? }?? class?Snake?{?? ????public?List<Node>?nodes?=?new?ArrayList<Node>();?? ????InterFace?interFace;?? ????int?dir=InterFace.R;?? ????public?Snake(InterFace?interFace)?{?? ????????this.interFace?=?interFace;?? ????????nodes.add(new?Node(20?+?150,?40?+?150));?? ????????addNode();?? ????}?? ????public?boolean?hit(Node?node)?{?? ????????for?(int?i?=?0;?i?<?nodes.size();?i++)?{?? ????????????if?(nodes.get(i).getRect().intersects(node.getRect()))?{?? ????????????????addNode();?? ????????????????return?true;?? ????????????}?? ????????}?? ????????return?false;?? ????}?? ????public?void?draw(Graphics2D?g2d)?{?? ????????for?(int?i?=?0;?i?<?nodes.size();?i++)?{?? ????????????nodes.get(i).draw(g2d);?? ????????}?? ????????move();?? ????}?? ????public?void?move()?{?? ????????nodes.remove((nodes.size()?-?1));?? ????????addNode();?? ????}?? ????public?synchronized?void?addNode()?{?? ????????Node?nodeTempNode?=?nodes.get(0);?? ????????switch?(dir)?{?? ????????case?InterFace.L:?? ????????????if?(nodeTempNode.x?<=?20)?{?? ????????????????nodeTempNode?=?new?Node(20?+?15?*?50,?nodeTempNode.y);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x?-?nodeTempNode.width,?? ????????????????????nodeTempNode.y));?? ????????????break;?? ????????case?InterFace.R:?? ????????????if?(nodeTempNode.x?>=?20?+?15?*?50?-?nodeTempNode.width)?{?? ????????????????nodeTempNode?=?new?Node(20?-?nodeTempNode.width,?nodeTempNode.y);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x?+?nodeTempNode.width,?? ????????????????????nodeTempNode.y));?? ????????????break;?? ????????case?InterFace.U:?? ????????????if?(nodeTempNode.y?<=?40)?{?? ????????????????nodeTempNode?=?new?Node(nodeTempNode.x,?40?+?15?*?35);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x,?nodeTempNode.y?-?nodeTempNode.height));?? ????????????break;?? ????????case?InterFace.D:?? ????????????if?(nodeTempNode.y?>=?40?+?15?*?35?-?nodeTempNode.height)?{?? ????????????????nodeTempNode?=?new?Node(nodeTempNode.x,40?-?nodeTempNode.height);?? ????????????}?? ????????????nodes.add(0,?new?Node(nodeTempNode.x,?nodeTempNode.y?+?nodeTempNode.height));?? ????????????break;?? ????????}?? ????}?? }

用Java语言写一个约1500行代码的贪吃蛇游戏

Runnable } if (i.util.Date.start();args) { Thread new Thread(new Thread1());0;one = new Thread(new Thread2()).printStackTrace(); public if (i % one.start(); two;class Thread2 Thread implements class Thread1 { while(true){ i++; System.out.println(new i = run() { while (true) { two = Date().toLocaleString()); } catch try { Thread.sleep(10000);Runnable { break; } } } } import java;Client { public static void main(String[] ); public void run() } } } }<pre t="code" l="java">public class 4 == 0) { System.out.println(;*******<pre t="code" l="java">public implements { private int (InterruptedException e) { e;{ public void 100)nbsp

求一个java的贪吃蛇程序(打包),发我

.tarena.elts.test; import java.awt.Color; import java.awt.Font; import java.awt.Point; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent; import java.util.ArrayList; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Random; import java.util.Set; import javax.swing.JButton; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class WormFrame extends JFrame{ private static final long serialVersionUID = 1L; public static final int UP = -10; public static final int DOWN = 10; public static final int LEFT = -200; public static final int RIGHT = 200; private int speed = 200;//蛇的移动速度,越小越快 private JPanel jPanel=null;//游戏面板 private JLabel jLabel=null;//显示游戏结束的标签 private JButton reset = null;//从新开始游戏的按钮 private JButton control = null;//控制方向的按钮 private List worm = new ArrayList();//贪吃蛇 //将整个面板划分成节点,蛇走到那里,就那整个节点点亮 private Map nodes = new HashMap(); private int dir= LEFT;//方向 private Point food;//食物 private boolean isContinue=false;//判断蛇是否行动的标记 public static void main(String[] args) { new WormFrame(); } public WormFrame() { initialize(); start(); } //游戏初始化 private void initialize() { this.setSize(500, 500); this.setLocation(250, 100); this.setResizable(false); this.add(getJPanel());//添加面板 this.setTitle("贪吃蛇,空格键暂停,回车开始"); this.setVisible(true); } //游戏开始 private void start() { isContinue = true; while (true) { while (isContinue) { try { Point p = worm.get(0); int x = (int) p.getX() + dir / 20; int y = (int) p.getY() + dir % 100; if (food.equals(new Point(x, y))) { worm.add(0, food); if(worm.size()%1==0){ speed-=10; } getFood(); continue; } p = new Point(x, y); if(worm.contains(p)){ throw new Exception(); } nodes.get(p).setVisible(false); worm.add(0, p); nodes.get(worm.remove(worm.size() - 1)).setVisible(true); Thread.sleep(speed); } catch (Exception e) { jLabel.setVisible(true); reset.setVisible(true); //不停止内循环,jLabel和reset不消失 isContinue = false; } } try { Thread.sleep(1000); } catch (InterruptedException e) { e.printStackTrace(); } } } //游戏从新开始 private void reset(){ worm = new ArrayList(); for(Point p :nodes.keySet()){ nodes.get(p).setVisible(false); } addWorm(); dir = LEFT; getFood(); isContinue =true; } //获取游戏面板的方法,面板中有记录游戏时间的标签, //代表游戏角色的按钮和 重新开始游戏的按钮 private JPanel getJPanel() { if (jPanel == null) { //显示游戏结束的标签 getOver(); //从新开始的按钮 getReset(); //控制按钮 getControl(); //游戏面板 jPanel = new JPanel(); jPanel.setLayout(null);//设置面板布局为空 //jPanel.setForeground(new Color(255,255,255));//设置面板前景色 jPanel.setBackground(new Color(0,0,0));//设置面板背景色 jPanel.add(jLabel,null);//面板中添加 显示游戏结束的标签 jPanel.add(reset,null);//面板中添加 从新开始 的按钮 jPanel.add(control,null); for(int i = 0;i<490;i+=10){ for (int j = 0; j < 470; j+=10) { JButton jb = new JButton(); Point p = new Point(i,j); jb.setBounds(i,j, 10, 10); jb.setBackground(new Color(255,255,255)); jb.setEnabled(false); //jb.setVisible(true); nodes.put(p, jb); jPanel.add(jb,null); } } addWorm();//添加一条蛇 getFood();//食物按钮 jPanel.setVisible(true);//设置面板可见 } return jPanel; } //游戏结束标签 private void getOver() { jLabel = new JLabel(); jLabel.setBounds(170, 200, 200, 50);//设置标签大小和位置 jLabel.setFont(new Font("Dialog", Font.BOLD, 24));//设置标签字体 jLabel.setForeground(new Color(250, 2, 2));//设置标签前景颜色 jLabel.setText(" 游戏结束"); jLabel.setEnabled(true);//设置此标签可用 jLabel.setVisible(false);//设置此标签不可见 } //从新开始按钮 private void getReset() { if (reset == null) { reset = new JButton();//新建一个按钮 reset.setBounds(170, 300, 164, 51);//设置按钮的大小 reset.setText("重新开始");//设置按钮的内容 reset.setVisible(false);//设置按钮不可见 //添加按钮的时间监听器 reset.addActionListener(new ActionListener() { public void actionPerformed(ActionEvent e) { reset.setVisible(false);// 点击重新开始按钮后,按钮消失 jLabel.setVisible(false);// 记录游戏时间的按钮也消失 try { Thread.sleep(1000); } catch (InterruptedException e1) { e1.printStackTrace(); } reset(); } }); } } //控制方向的按钮 private void getControl(){ if(control == null){ control = new JButton(); control.addKeyListener(new KeyAdapter() { @Override public void keyPressed(KeyEvent e) { switch(e.getKeyCode()){ case KeyEvent.VK_LEFT :chDir(LEFT);break; case KeyEvent.VK_RIGHT :chDir(RIGHT);break; case KeyEvent.VK_UP :chDir(UP);break; case KeyEvent.VK_DOWN :chDir(DOWN);break; case KeyEvent.VK_ENTER:isContinue = true;break; case KeyEvent.VK_SPACE:isContinue = false;break; } } }); } } //生成食物 private void getFood(){ Random ran = new Random(); //横坐标最大480,纵坐标最大460 int x = ran.nextInt(49)*10; int y = ran.nextInt(47)*10; food = new Point(x,y); Set set = new HashSet(worm); while(set.contains(food)){ x = ran.nextInt(50)*10; y = ran.nextInt(50)*10; food = new Point(x,y); } nodes.get(food).setVisible(false); } //改变方向 private void chDir(int dir){ if(this.dir+dir!=0){ this.dir = dir; } } //添加Worm的方法 private void addWorm(){ for(int i = 250;i<300;i+=10){ Point p = new Point(i,250); worm.add(p); nodes.get(p).setVisible(true); } } } //给分

日本美国站群服务器raksmart站群新增,限量低至月1.99美元

RAKsmart 商家八月份的促销活动今天更新。基本上和上个月的产品套餐活动差不多的,不过也是有简单的微调。对于RAKsmart商家还是比较了解的,他们家产品虽然这两年增加多个机房,以及在VPS主机方案上有丰富的机房和调整到一些自营机房,他们家的策划能力还是有限,基本上每个月的套餐活动都差不多。RAKsmart 在八月份看到有新增香港高防服务器可选,最高100GB防御。同时原来上个月缺货的日本独立...

易探云香港云服务器价格多少钱1个月/1年?

易探云怎么样?易探云是目前国内少数优质的香港云服务器服务商家,目前推出多个香港机房的香港云服务器,有新界、九龙、沙田、葵湾等机房,还提供CN2、BGP及CN2三网直连香港云服务器。近年来,许多企业外贸出海会选择香港云服务器来部署自己的外贸网站,使得越来越多的用户会选择易探云作为网站服务提供平台。今天,云服务器网(yuntue.com)小编来谈谈易探云和易探云服务器怎么样?具体香港云服务器多少钱1个...

paypal$10的代金券,选购美国VPS

paypal贝宝可撸$10的代金券!这两天paypal出了活动,本次并没有其他的限制,只要注册国区的paypal,使用国内的手机号和62开头的银联卡,就可以获得10美元的代金券,这个代金券购买产品需要大于10.1美元,站长给大家推荐几个方式,可以白嫖一年的VPS,有需要的朋友可以看看比较简单。PayPal送10美元活动:点击直达活动sfz与绑定卡的号码可以重复用 注册的邮箱,手机号与绑的银联卡必须...

java贪吃蛇为你推荐
strstrc++里strstr是啥意思???showwindowC#中showwindow控件在哪里??策略组电脑组策略详解arc是什么意思arctanx等于什么?天融信防火墙笔记本怎么登陆天融信防火墙inode智能客户端inode智能客户端无法正常启动,根本开都开不了丁奇王下七武海和四皇分别是谁?疫苗之王被称为免疫之王的产品酷源码酷我音乐音乐源文件在哪mac地址过滤关于路由器的MAC地址过滤功能
3322动态域名注册 域名备案只选云聚达 西安服务器 罗马假日广场 ddos justhost Hello图床 anylink 北京双线机房 静态空间 免费网页空间 电信托管 无限流量 根服务器 创建邮箱 宏讯 华为云建站 云服务是什么意思 密钥索引 phpinfo 更多