欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    Java写小游戏吞食蛇源码.docx

    • 资源ID:3159533       资源大小:40.34KB        全文页数:10页
    • 资源格式: DOCX        下载积分:6.99金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要6.99金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Java写小游戏吞食蛇源码.docx

    Java写小游戏吞食蛇源码用java编写的简单的吞食蛇游戏 java新手,简单的吞食蛇游戏,一边写一边查书,写了半天才弄出来 没法把jar文件附在文章后面,想试试的人自己编译一下吧 有意见尽管提,高手多多指导,不过骂人就算了 / / 文件1 / import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.*; public class GreedSnake implements KeyListener JFrame mainFrame; Canvas paintCanvas; JLabel labelScore; SnakeModel snakeModel = null; public static final int canvasWidth = 200; public static final int canvasHeight = 300; public static final int nodeWidth = 10; public static final int nodeHeight = 10; public GreedSnake mainFrame = new JFrame("GreedSnake"); Container cp = mainFrame.getContentPane; labelScore = new JLabel("Score:"); cp.add(labelScore, BorderLayout.NORTH); paintCanvas = new Canvas; paintCanvas.setSize(canvasWidth+1,canvasHeight+1); paintCanvas.addKeyListener(this); cp.add(paintCanvas, BorderLayout.CENTER); JPanel panelButtom = new JPanel; panelButtom.setLayout(new BorderLayout); JLabel labelHelp; labelHelp = new JLabel("PageUp, PageDown for speed;", JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.NORTH); labelHelp = new JLabel("ENTER or R or S for start;", JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.CENTER); labelHelp = new JLabel("SPACE or P for pause",JLabel.CENTER); panelButtom.add(labelHelp, BorderLayout.SOUTH); cp.add(panelButtom,BorderLayout.SOUTH); mainFrame.addKeyListener(this); mainFrame.pack; mainFrame.setResizable(false); mainFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); mainFrame.setVisible(true); begin; public void keyPressed(KeyEvent e) int keyCode = e.getKeyCode; if (snakeModel.running) switch(keyCode) case KeyEvent.VK_UP: snakeModel.changeDirection(SnakeModel.UP); break; case KeyEvent.VK_DOWN: snakeModel.changeDirection(SnakeModel.DOWN); break; case KeyEvent.VK_LEFT: snakeModel.changeDirection(SnakeModel.LEFT); break; case KeyEvent.VK_RIGHT: snakeModel.changeDirection(SnakeModel.RIGHT); break; case KeyEvent.VK_ADD: case KeyEvent.VK_PAGE_UP: snakeModel.speedUp; break; case KeyEvent.VK_SUBTRACT: case KeyEvent.VK_PAGE_DOWN: snakeModel.speedDown; break; case KeyEvent.VK_SPACE: case KeyEvent.VK_P: snakeModel.changePauseState; break; default: if (keyCode = KeyEvent.VK_R | keyCode = KeyEvent.VK_S | keyCode = KeyEvent.VK_ENTER) snakeModel.running = false; begin; public void keyReleased(KeyEvent e) public void keyTyped(KeyEvent e) void repaint Graphics g = paintCanvas.getGraphics; /draw background g.setColor(Color.WHITE); g.fillRect(0,0,canvasWidth,canvasHeight); / draw the snake g.setColor(Color.BLACK); LinkedList na = snakeModel.nodeArray; Iterator it = na.iterator; while(it.hasNext) Node n = (Node)it.next; drawNode(g,n); / draw the food g.setColor(Color.RED); Node n = snakeModel.food; drawNode(g,n); updateScore; private void drawNode(Graphics g, Node n) g.fillRect(n.x*nodeWidth, n.y*nodeHeight, nodeWidth-1, nodeHeight-1); public void updateScore String s = "Score: " + snakeModel.score; labelScore.setText(s); void begin if (snakeModel = null | !snakeModel.running) snakeModel = new SnakeModel(this, canvasWidth/nodeWidth, canvasHeight/nodeHeight); (new Thread(snakeModel).start; public static void main(String args) GreedSnake gs = new GreedSnake; / / 文件2 / import java.util.*; import javax.swing.*; class SnakeModel implements Runnable GreedSnake gs; boolean matrix; LinkedList nodeArray = new LinkedList; Node food; int maxX; int maxY; int direction = 2; boolean running = false; int timeInterval = 200; double speedChangeRate = 0.75; boolean paused = false; int score = 0; int countMove = 0; / UP and DOWN should be even / RIGHT and LEFT should be odd public static final int UP = 2; public static final int DOWN = 4; public static final int LEFT = 1; public static final int RIGHT = 3; public SnakeModel(GreedSnake gs, int maxX, int maxY) this.gs = gs; this.maxX = maxX; this.maxY = maxY; / initial matirx matrix = new booleanmaxX; for(int i=0; i matrixi = new booleanmaxY; Arrays.fill(matrixi,false); / initial the snake int initArrayLength = maxX > 20 ? 10 : maxX/2; for(int i = 0; i < initArrayLength; +i) int x = maxX/2+i; int y = maxY/2; nodeArray.addLast(new Node(x, y); matrixxy = true; food = createFood; matrixfood.xfood.y = true; public void changeDirection(int newDirection) if (direction % 2 != newDirection % 2) direction = newDirection; public boolean moveOn Node n = (Node)nodeArray.getFirst; int x = n.x; int y = n.y; switch(direction) case UP: y-; break; case DOWN: y+; break; case LEFT: x-; break; case RIGHT: x+; break; if (0 <= x && x < maxX) && (0 <= y && y < maxY) if (matrixxy) if(x = food.x && y = food.y) nodeArray.addFirst(food); int scoreGet = (10000 - 200 * countMove) / timeInterval; score += scoreGet > 0? scoreGet : 10; countMove = 0; food = createFood; matrixfood.xfood.y = true; return true; else return false; else nodeArray.addFirst(new Node(x,y); matrixxy = true; n = (Node)nodeArray.removeLast; matrixn.xn.y = false; countMove+; return true; return false; public void run running = true; while (running) try Thread.sleep(timeInterval); catch(Exception e) break; if(!paused) if (moveOn) gs.repaint; else JOptionPane.showMessageDialog( null, "you failed", "Game Over", JOptionPane.INFORMATION_MESSAGE); break; running = false; private Node createFood int x = 0; int y = 0; do Random r = new Random; x = r.nextInt(maxX); y = r.nextInt(maxY); while(matrixxy); return new Node(x,y); public void speedUp 疯狂java简介 疯狂Java是广州为学教育科技有限公司旗下品牌,由李刚老师、肖文吉老师联合创建,作为一家专注于javaEE和3G/4G技术的专业培训服务机构,疯狂Java怀抱“软件强国”的理想,立志以务实的技术来改变中国的软件教育。以“十年磨一剑”的心态打造全中国最强的Java学习体系。 疯狂java培训讲义 疯狂Java相继出版疯狂Java讲义、疯狂Android讲义、轻量级JavaEE企业应用实战、疯狂Ajax讲义、疯狂XML讲义、经典JavaEE企业应用实战、Struts2.1 权威指南、RubyOnRails敏捷开发最佳实践、疯狂Java突破程序员基本功的16课、疯狂JAVA成为程设高手的16堂课等著作。其中疯狂Java体系图书都是已经得到广泛的市场认同,并多次重印的畅销图书,并被多家高校选作教材,部分图书已被翻译成繁体中文版、输出到台湾地区。 疯狂java发展概况 疯狂Java紧扣IT前沿技术的脉搏,高瞻远瞩立于潮头,引领行业标杆,开创IT教育培训的新天地,被称为新式IT教育的“黄埔军校”。疯狂java教育中心主要面对大学生和准大学生的长期就业培训、企业员工定制内训、在职工程师的短期高端培训以及企业级应用的产品研发,其专业服务和质量承诺在客户中赢得广泛的声誉。为保服务的质量,学校与华南理工大学、中山大学、暨南大学、华南师范大学等高等学府建立了师资力量方面的合作关系,同时与中国电信、中国移动、中国邮政、新华南方、汇丰银行等知名企业建立了广泛的战略合作伙伴关系。 疯狂java师资力量 疯狂Java创始人李刚,携疯狂Java精英讲师团队肖文吉、李韩飞、黄勇、陈辉等老师将带给广大学习者“非一般”的疯狂。 疯狂java培训特色 疯狂Java结合自身特色,打破固有思维模式,以突出实战性,系统性,学识转换相结合的理念体系指引下,注重如何将培训内容真正转化为实操经验,以此促进工作能力的达成。在疯狂软件学院,学员通过参与企业实际项目开发,学以致用,获得实际项目经验。凭借自身强悍的师资、一流的课程、真实的项目、超高的就业率已经让广大南方学子成功走上软件工程师职业道路。大量毕业即失业的学子已通过疯狂Java实现了就业。加入疯狂Java,加入改变世界的力量,让我们一起行动,用自己的代码改变世界! 地址:广州市天河区车陂大岗路4号沣宏大厦3011过马路左转前行200米) 联系电话: 020-28309358、28309378 java技术问题咨询QQ:951170790

    注意事项

    本文(Java写小游戏吞食蛇源码.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开