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); } } } //给分

月神科技-美国CERA 5折半价倒计时,上新华中100G高防云59起!

官方网站:点击访问月神科技官网优惠码:美国优惠方案:CPU:E5-2696V2,机房:国人热衷的优质 CeraNetworks机房,优惠码:3wuZD43F 【过期时间:5.31,季付年付均可用】活动方案:1、美国机房:洛杉矶CN2-GIA,100%高性能核心:2核CPU内存:2GB硬盘:50GB流量:Unmilited端口:10Mbps架构:KVM折后价:15元/月、150元/年传送:购买链接洛...

MechanicWeb免费DirectAdmin/异地备份

MechanicWeb怎么样?MechanicWeb好不好?MechanicWeb成立于2008年,目前在美国洛杉矶、凤凰城、达拉斯、迈阿密、北卡、纽约、英国、卢森堡、德国、加拿大、新加坡有11个数据中心,主营全托管型虚拟主机、VPS主机、半专用服务器和独立服务器业务。MechanicWeb只做高端的托管vps,这次MechanicWeb上新Xeon W-1290P处理器套餐,基准3.7GHz最高...

DogYun(300元/月),韩国独立服务器,E5/SSD+NVMe

DogYun(中文名称狗云)新上了一批韩国自动化上架独立服务器,使用月减200元优惠码后仅需每月300元,双E5 CPU,SSD+NVMe高性能硬盘,支持安装Linux或者Windows操作系统,下单自动化上架。这是一家成立于2019年的国人主机商,提供VPS和独立服务器租用等产品,数据中心包括中国香港、美国洛杉矶、日本、韩国、德国、荷兰等。下面分享这款自动化上架韩国独立服务器的配置和优惠码信息。...

java贪吃蛇为你推荐
网关和路由器的区别网关和路由器的具体区别在哪里呀?deviceid怎么能知道安卓系统手机的DEVICE ID?jqlJQL JINQILIN注册过商标吗?还有哪些分类可以注册?调度系统现在有很多人说同城调度系统,这是用来干嘛的呀?丁奇请全面剖析一下黑胡子丁奇这个人物。数秦科技浙江数链科技有限公司怎么样?民生电商陆金所、民生电商哪个更适合投资?layoutsubviews如何设置plus.nativeui.toast的样式pci数据捕获和信号处理控制器华硕pci数据捕获和信号处理控制器出现黄色叹号该下载什么驱动菜霸电视剧《你是我的生命》演员表
主机租赁 太原域名注册 电信服务器租用 warez oneasiahost 免费ftp空间 轻量 全能主机 qq数据库 警告本网站美国保护 我爱水煮鱼 jsp空间 稳定免费空间 www789 中国域名 电信宽带测速软件 服务器托管价格 贵州电信 sonya 美国十大啦 更多