/*** 贪吃蛇程序*/
package demo1;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.*;
import javax.swing.*;
import java.util.Random;
import java.util.Timer;
public class G1 extends JFrame {private static final long serialVersionUID = 1L;MyPanel p1;int k=0,i=0;public G1(){p1=new MyPanel();this.add(p1);//把面板加入到框架中this.addKeyListener(p1);//按键监听注册p1.timer.schedule(new java.util.TimerTask()//没0.2秒程序启动一遍{public void run(){p1.repaint();//画图片//判断是否吃到食物if(p1.snake1.x[p1.snake1.n-1]==p1.food.getM()&&p1.snake1.y[p1.snake1.n-1]==p1.food.getK()){switch(p1.snake1.dir) //每次画图时,变化坐标的函数{case "left":p1.snake1.x[p1.snake1.n]=p1.snake1.x[p1.snake1.n-1]-1;p1.snake1.y[p1.snake1.n]=p1.snake1.y[p1.snake1.n-1];break;case "right":p1.snake1.x[p1.snake1.n]=p1.snake1.x[p1.snake1.n-1]+1;p1.snake1.y[p1.snake1.n]=p1.snake1.y[p1.snake1.n-1];break;case "up":p1.snake1.y[p1.snake1.n] =p1.snake1.y[p1.snake1.n-1]-1;p1.snake1.x[p1.snake1.n]=p1.snake1.x[p1.snake1.n-1];break;case "down":p1.snake1.y[p1.snake1.n]=p1.snake1.y[p1.snake1.n-1]+1;p1.snake1.x[p1.snake1.n]=p1.snake1.x[p1.snake1.n-1];break;   }p1.snake1.n++;do//判断生成的食物是否和蛇重合{p1.food.change();k=0;for(i=0;i<p1.snake1.n-1;i++) {if(p1.snake1.x[i]==p1.food.getM()&&p1.snake1.y[i]==p1.food.getK()) {k=1;break;}}}while(k!=0);}//咬到自己for(int i=0;i<p1.snake1.n-2;i++) {if(p1.snake1.x[i]==p1.snake1 .x[p1.snake1.n-1]&&p1.snake1.y[i]==p1.snake1 .y[p1.snake1.n-1]) {p1.timer.cancel();} }//撞墙游戏结束if(p1.snake1.x[p1.snake1.n-1]>36|p1.snake1.x[p1.snake1.n-1]<0||p1.snake1.y[p1.snake1.n-1]<0||p1.snake1.y[p1.snake1.n-1]>24) {p1.timer.cancel();}}},0,200);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//关闭窗口this.setSize(500, 400);//设置屏幕大小this.setVisible(true);//显示JFramethis.setTitle("贪吃蛇游戏");this.setLocation(700, 300);}public static void main(String[] args) {G1 g1=new G1();}
}
class MyPanel extends JPanel implements KeyListener{//绘画蛇身的地方int i,m,k;Snake snake1=new Snake();Food food=new Food();Timer timer=new Timer();JLabel ii=new JLabel("游戏分数");public MyPanel() {this.add(ii);}public void paint(Graphics g) {super.paint(g);g.setColor(Color.green);//设置颜色g.drawRect(0, 0, 380, 255);switch(snake1.dir) //每次画图时,变化坐标的函数{case "left":for(i=0;i<snake1.n-1;i++) {snake1.x[i]=snake1.x[i+1];snake1.y[i]=snake1.y[i+1];}snake1.x[snake1.n-1]=snake1.x[snake1.n-2]-1;break;case "right":for(i=0;i<snake1.n-1;i++) {snake1.x[i]=snake1.x[i+1];snake1.y[i]=snake1.y[i+1];}snake1.x[snake1.n-1]=snake1.x[snake1.n-2]+1;break;case "up":for(i=0;i<snake1.n-1;i++) {snake1.x[i]=snake1.x[i+1];snake1.y[i]=snake1.y[i+1];}snake1.y[snake1.n-1] =snake1.y[snake1.n-2]-1;break;case "down":for(i=0;i<snake1.n-1;i++) {snake1.x[i]=snake1.x[i+1];snake1.y[i]=snake1.y[i+1];}snake1.y[snake1.n-1]=snake1.y[snake1.n-2]+1;break;   }for( i=0;i<snake1.n;i++) {g.fill3DRect(snake1.x[i]*10, snake1.y[i]*10, 10, 10, false);}g.setColor(Color.blue);g.fill3DRect(food.getM()*10, food.getK()*10, 10, 10, false);ii.setText("游戏分数"+(snake1.n-3)*10);ii.setLocation(400,50);//画蛇一节一节}
public void keyPressed(KeyEvent arg0)//当按键被按下时,修改贪吃蛇的方向{if(arg0.getKeyCode()==KeyEvent.VK_DOWN&&snake1.dir!="up") {snake1.dir="down";}else if(arg0.getKeyCode()==KeyEvent.VK_LEFT&&snake1.dir!="right") {snake1.dir="left";}else if(arg0.getKeyCode()==KeyEvent.VK_RIGHT&&snake1.dir!="left") {snake1.dir="right";}else if(arg0.getKeyCode()==KeyEvent.VK_UP&&snake1.dir!="down") {snake1.dir="up";}}public void keyReleased(KeyEvent arg0) {// TODO Auto-generated method stub}public void keyTyped(KeyEvent arg0) {// TODO Auto-generated method stub}
}
class Snake//关于蛇的内容
{int x[]=new int[100];int y[]=new int[100];//蛇身的坐标String  dir="right";//蛇走的方向int n;//蛇的长度public Snake()//初始化蛇的长度,三节蛇身{this.n=3;this.x[0]=15;this.y[0]=11;this.x[1]=16;this.y[1]=11;this.x[2]=17;this.y[2]=11;}public void changesnake(int m,int k)//当吃到食物的时候,能够增加蛇身的长度{x[n]=m;y[n]=k;n++;}
}
class Food//蛇的食物内容
{int m=20;//横坐标int k=7;//纵坐标Random random = new Random();public void change(){this.m=random.nextInt(29)+2;this.k=random.nextInt(19)+2;     }public int getM() {return m;}public int getK() {return k;}
}

java版的贪吃蛇。相关推荐

  1. 贪吃蛇java版_java贪吃蛇极速版

    本文为大家推荐了一款由java实现经典小游戏:贪吃蛇,相信大家都玩过,如何实现的呐? 效果图: 废话不多说,直接奉上代码: 1. public class GreedSnake { public st ...

  2. 诺基亚3d贪吃蛇java版_3D贪吃蛇诺基亚六边形

    3D贪吃蛇诺基亚六边形是一款十分经典的贪吃蛇游戏.3D贪吃蛇诺基亚六边形是曾经的手机巨头诺基亚在自己的产品上内置的一款贪吃蛇游戏,这款贪吃蛇从2D空间进化到了3D空间,玩家将在一个立体的六边形内操控贪 ...

  3. java毕业设计——基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码)——贪吃蛇游戏

    基于java+J2ME的贪吃蛇游戏设计与实现(毕业论文+程序源码) 大家好,今天给大家介绍基于java+J2ME的贪吃蛇游戏设计与实现,文章末尾附有本毕业设计的论文和源码下载地址哦.需要下载开题报告P ...

  4. 利用python实现简易版的贪吃蛇游戏(面向python小白)

    前言 这篇文章主要给大家介绍了关于如何利用python实现简易版的贪吃蛇游戏的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学 ...

  5. python贪吃蛇最简单代码_利用python实现简易版的贪吃蛇游戏(面向python小白)

    引言 作为python 小白,总是觉得自己要做好百分之二百的准备,才能开始写程序.以至于常常整天在那看各种语法教程,学了几个月还是只会print('hello world'). 这样做效率太低,正确的 ...

  6. 做一个简单的java小游戏--贪吃蛇

    做一个简单的java小游戏–贪吃蛇 贪吃蛇游戏博客链接:(方法一样,语言不一样) c++贪吃蛇:https://blog.csdn.net/weixin_46791942/article/detail ...

  7. 基于Java实现的贪吃蛇大作战小游戏

    贪吃蛇大作战小游戏 整体思路与架构 本项目主要分为三个部分,即UI界面.游戏逻辑与网络传输. UI界面部分,主要是为了实现不同界面之间的切换.包括了注册登陆窗口(loginFrame)与游戏主窗口(G ...

  8. Java游戏开发——贪吃蛇

    最近在重构代码,思路和制作过程都有不少变化,为了避免混淆,我将之前的博客内容移到了我的有道云笔记里,通过链接可以查看历史文章. 旧版:http://note.youdao.com/noteshare? ...

  9. java超级简单贪吃蛇_java实现简易贪吃蛇游戏

    本文实例为大家分享了java实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 1.封装贪吃蛇身体,抽象出贪吃蛇结点类Node,结点用ArrayList存储 import java.awt.*; pu ...

最新文章

  1. 深度学习经典教程:深度学习+动手学深度学习
  2. 共建网络安全 共享网络文明 2015福建网络安全日开幕在即
  3. mysql查询2020年之前_2020年成人高考成绩如何查询?2020年成考录取结果如何查询?...
  4. python信息管理系统统计功能_用Python实现职工信息管理系统
  5. 聊聊一直困扰前端程序员的浏览器兼容-【css】
  6. c语言第一次作业,C语言培训班第一次作业 (1)
  7. Linux服务器硬盘更换,[ Linux ] 服务器更换硬盘
  8. 贺双节,签名版限量特惠
  9. MongoDB Aggregation聚合操作
  10. 编写一个程序,给出汉字“你” “我” “他”在Unicode表中的位置
  11. 图书管理系统 ——mysql数据库
  12. x64伪装进程路径 过PCHunter xxx ARK
  13. Ansible tags 的用法详解
  14. viewport的width值应该怎么设置
  15. Java泛型进阶篇: 无界通配符、上界通配符以及下界通配符
  16. 美团智能支付稳定性测试实战
  17. rails开发利器:视频播放插件plugin(如何开发一个简单的插件)
  18. 提高转化率和获取手淘流量的技巧方法,如何提高转化率?
  19. Packet len* is out of range 解决方法
  20. 修改Ubuntu的更新源

热门文章

  1. Webrtc之2台电脑视频聊天
  2. ubuntu防火墙问题
  3. 怎么配置堡垒机_轻量级堡垒机teleport的使用
  4. casio wrist怎么调时间_价格便宜量也足,小米有品TIMEROLLS COB时间轨迹石英腕表体验...
  5. linux centos history 查看命令历史 显示时间戳
  6. C语言在工业工程专业的应用,工业工程专业知识介绍
  7. ebaz s9 zynq linux中关于网络的一些小问题
  8. python密码传参有特殊字符如何解决_am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符的解决方案...
  9. c++在数组中添加元素_39. 数组中数值和下标相等的元素
  10. python统计词频瓦尔登湖_1.5 python文件操作