网创优客建站品牌官网
为成都网站建设公司企业提供高品质网站建设
热线:028-86922220
成都专业网站建设公司

定制建站费用3500元

符合中小企业对网站设计、功能常规化式的企业展示型网站建设

成都品牌网站建设

品牌网站建设费用6000元

本套餐主要针对企业品牌型网站、中高端设计、前端互动体验...

成都商城网站建设

商城网站建设费用8000元

商城网站建设因基本功能的需求不同费用上面也有很大的差别...

成都微信网站建设

手机微信网站建站3000元

手机微信网站开发、微信官网、微信商城网站...

建站知识

当前位置:首页 > 建站知识

java贪吃蛇登录代码 java贪吃蛇代码网盘

求java贪吃蛇的编程,并有注释

J2ME贪吃蛇源代码——200行左右,包含详细注释 package snake;import javax.microedition.midlet.*;

招远ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

import javax.microedition.lcdui.*;public class SnakeMIDlet extends MIDlet {

SnakeCanvas displayable = new SnakeCanvas();

public SnakeMIDlet() {

Display.getDisplay(this).setCurrent(displayable);

}public void startApp() {}public void pauseApp() {}public void destroyApp(boolean unconditional) {}}//文件名:SnakeCanvas.javapackage snake;import java.util.*;

import javax.microedition.lcdui.*;/**

* 贪吃蛇游戏

*/

public class SnakeCanvas extends Canvas implements Runnable{

/**存储贪吃蛇节点坐标,其中第二维下标为0的代表x坐标,第二维下标是1的代表y坐标*/

int[][] snake = new int[200][2];

/**已经使用的节点数量*/

int snakeNum;

/**贪吃蛇运动方向,0代表向上,1代表向下,2代表向左,3代表向右*/

int direction;

/*移动方向*/

/**向上*/

private final int DIRECTION_UP = 0;

/**向下*/

private final int DIRECTION_DOWN = 1;

/**向左*/

private final int DIRECTION_LEFT = 2;

/**向右*/

private final int DIRECTION_RIGHT = 3;/**游戏区域宽度*/

int width;

/**游戏区域高度*/

int height;/**蛇身单元宽度*/

private final byte SNAKEWIDTH = 4;/**是否处于暂停状态,true代表暂停*/

boolean isPaused = false;

/**是否处于运行状态,true代表运行*/

boolean isRun = true;/**时间间隔*/

private final int SLEEP_TIME = 300;

/**食物的X坐标*/

int foodX;

/**食物的Y坐标*/

int foodY;

/**食物的闪烁控制*/

boolean b = true;

/**Random对象*/

Random random = new Random();

public SnakeCanvas() {

//初始化

init();

width = this.getWidth();

height = this.getHeight();

//启动线程

new Thread(this).start();

}/**

* 初始化开始数据

*/

private void init(){

//初始化节点数量

snakeNum = 7;

//初始化节点数据

for(int i = 0;i snakeNum;i++){

snake[i][0] = 100 - SNAKEWIDTH * i;

snake[i][1] = 40;

}

//初始化移动方向

direction = DIRECTION_RIGHT;

//初始化食物坐标

foodX = 100;

foodY = 100;

}protected void paint(Graphics g) {

//清屏

g.setColor(0xffffff);

g.fillRect(0,0,width,height);

g.setColor(0);//绘制蛇身

for(int i = 0;i snakeNum;i++){

g.fillRect(snake[i][0],snake[i][1],SNAKEWIDTH,SNAKEWIDTH);

}

//绘制食物

if(b){

g.fillRect(foodX,foodY,SNAKEWIDTH,SNAKEWIDTH);

}

}private void move(int direction){

//蛇身移动

for(int i = snakeNum - 1;i 0;i--){

snake[i][0] = snake[i - 1][0];

snake[i][1] = snake[i - 1][1];

}//第一个单元格移动

switch(direction){

case DIRECTION_UP:

snake[0][1] = snake[0][1] - SNAKEWIDTH;

break;

case DIRECTION_DOWN:

snake[0][1] = snake[0][1] + SNAKEWIDTH;

break;

case DIRECTION_LEFT:

snake[0][0] = snake[0][0] - SNAKEWIDTH;

break;

case DIRECTION_RIGHT:

snake[0][0] = snake[0][0] + SNAKEWIDTH;

break;

}

}

/**

* 吃掉食物,自身增长

*/

private void eatFood(){

//判别蛇头是否和食物重叠

if(snake[0][0] == foodX snake[0][1] == foodY){

snakeNum++;

generateFood();

}

}

/**

* 产生食物

* 说明:食物的坐标必须位于屏幕内,且不能和蛇身重合

*/

private void generateFood(){

while(true){

foodX = Math.abs(random.nextInt() % (width - SNAKEWIDTH + 1))

/ SNAKEWIDTH * SNAKEWIDTH;

foodY = Math.abs(random.nextInt() % (height - SNAKEWIDTH + 1))

/ SNAKEWIDTH * SNAKEWIDTH;

boolean b = true;

for(int i = 0;i snakeNum;i++){

if(foodX == snake[i][0] snake[i][1] == foodY){

b = false;

break;

}

}

if(b){

break;

}

}

}

/**

* 判断游戏是否结束

* 结束条件:

* 1、蛇头超出边界

* 2、蛇头碰到自身

*/

private boolean isGameOver(){

//边界判别

if(snake[0][0] 0 || snake[0][0] (width - SNAKEWIDTH) ||

snake[0][1] 0 || snake[0][1] (height - SNAKEWIDTH)){

return true;

}

//碰到自身

for(int i = 4;i snakeNum;i++){

if(snake[0][0] == snake[i][0]

snake[0][1] == snake[i][1]){

return true;

}

}

return false;

}/**

* 事件处理

*/

public void keyPressed(int keyCode){

int action = this.getGameAction(keyCode);

//改变方向

switch(action){

case UP:

if(direction != DIRECTION_DOWN){

direction = DIRECTION_UP;

}

break;

case DOWN:

if(direction != DIRECTION_UP){

direction = DIRECTION_DOWN;

}

break;

case LEFT:

if(direction != DIRECTION_RIGHT){

direction = DIRECTION_LEFT;

}

break;

case RIGHT:

if(direction != DIRECTION_LEFT){

direction = DIRECTION_RIGHT;

}

break;

case FIRE:

//暂停和继续

isPaused = !isPaused;

break;

}

}/**

* 线程方法

* 使用精确延时

*/

public void run(){

try{

while (isRun) {

//开始时间

long start = System.currentTimeMillis();

if(!isPaused){

//吃食物

eatFood();

//移动

move(direction);

//结束游戏

if(isGameOver()){

break;

}

//控制闪烁

b = !b;

}

//重新绘制

repaint();

long end = System.currentTimeMillis();

//延时

if(end - start SLEEP_TIME){

Thread.sleep(SLEEP_TIME - (end - start));

}

}

}catch(Exception e){}

}

}

求贪吃蛇java程序代码(要能运行的,有完整注释的)

三个文件,楼主看好:

运行可以,但是并不能鼓吹是一个具有好的风格的代码,。

//文件一

package greedysnake_cx;

public class Node {

int x=0;

int y=0;

int nodewidth;

int nodeheight;

Node(int x,int y){

this.x=x;

this.y=y;

}

}

//文件二

package greedysnake_cx;

/**

* 实现一个greedysnake的模型,具有功能:

* 1)移动,moveOn()----从director参数中获取方向信息,如果方向定义的下一个点的逻辑值是true,检查是不是food,是则将food添加到

* 列表的头部,snake继续移动,不是则停止移动(撞到蛇尾巴了)

* 2)加速,speedUp()----将现成的停滞时间间隔interval按照一定的比率 speedRate进行扩大

* 3)减速,speedDown()----....

*

* 该类实现Runnable接口,

* */

//定义snake的模型

import java.util.*;

import javax.swing.*;

public class SnakeModel implements Runnable {

private GreedSnake gs;

//给每一个矩阵点确立一个boolean值

boolean[][] matrix;

private int maxX;

private int maxY;

//设置一个节点的列表;

LinkedList nodeArray = new LinkedList();

Node food=null;

int direction=UP;

int score=0;

//定义方向

public final static int LEFT=1;

public final static int UP=2;

public final static int RIGHT=3;

public final static int DOWN=4;

private int interval=200; //停顿时间的间隔

boolean pause=false; //定义暂停

private double speedRate=0.5; //定义速度的变更幅度

//constructor

public SnakeModel(GreedSnake gs,int maxx,int maxy){

this.gs=gs;

this.maxX=maxx;

this.maxY=maxy;

//this.matrix=null;

////////////////////////////////////////////////////////////////////

//init matrix[][];

matrix=new boolean[maxX][]; //***********************不初始化是不行滴

for(int i=0;imaxX;i++){

matrix[i]=new boolean[maxY];//将矩阵的每一行定义成列的集合

Arrays.fill(matrix[i], false);///使用java.util.Arrays的static方法fill,将matrix[]数组里面的元素全部定义成false

//至此,矩阵里面所有的点的boolean值都是flase

//for(int j=0;jmaxY;j++){

//matrix[i][j]=false;

//}

}

////////////////////////////////////////////////////////////////////

//init nodeArray

int initlength=10;

for(int i=0;iinitlength;i++){

//确保snake出现在屏幕的中央 assure that the greedy snake appears in the center of the model

//snake的长度由maxX来确定

int x=maxX/2+i;

int y=maxY/2;

nodeArray.addFirst(new Node(x,y));

matrix[x][y]=true;

}

//////////////////////////////////////////////////////////////////////

//创建食物

food=createFood();

System.out.println("some test!");

matrix[food.x][food.y]=true;

}//end constructor

//snake动起

public boolean moveOn(){

Node head=(Node)nodeArray.getFirst();

int x=head.x;

int y=head.y;

switch(direction){

case LEFT:

x--;break;

case UP:

y--;break;

case RIGHT:

x++;break;

case DOWN:

y++;break;

default:

}

if((x = 0 x maxX) (y = 0 y maxY)){

if(matrix[x][y]){//当蛇头转至一个bool值为true的点时

if(x==food.xy==food.y){//该点是食物

nodeArray.addFirst(food);

//吃掉补上

food=createFood();

matrix[food.x][food.y]=true;

score+=10;

return true;

}

else //该点不是食物,(蛇尾巴)

return false;

}

else{

nodeArray.addFirst(new Node(x,y));

matrix[x][y]=true;

Node nn=(Node)nodeArray.removeLast();//移除并且返回列表中的最后一个元素

matrix[nn.x][nn.y]=false;

return true;

}

}

return false;

}//end moveOn

public void run() {

boolean running=true;

while(running){

try{

Thread.sleep(interval);

}

catch(InterruptedException e){

e.printStackTrace();

}

if(!pause){

if(moveOn()){

gs.repaint();

}

else{

JOptionPane.showMessageDialog(null, "sorry myboy,GAME OVER!", "message", JOptionPane.INFORMATION_MESSAGE);

running=false;

}

}

}

/*boolean running=true;

while(running){

try{

Thread.sleep(interval);

}

catch (InterruptedException e){

e.printStackTrace();

}

if(!pause){

if(moveOn()){

gs.repaint();

}

else{

JOptionPane.showMessageDialog(null,"i am sorry ,you failed!","message",JOptionPane.INFORMATION_MESSAGE);

break;

}

}

}//end while

running=false;//当且仅当失败退出的时候;

*/

}

//获取当前游戏得分

public int getScore(){

return this.score;

}

//加速

public void speedUp(){

interval*=speedRate;

}

//减速

public void speedDown(){

interval/=speedRate;

}

//设置暂停

public void chagePause(){

pause=!pause;

}

//设置方向

public void chageDirection(int newdirection){

if(direction % 2 != newdirection % 2){

direction=newdirection;

}

}

//生成食物

private Node createFood() {

/*

* 创建一个随机数的生成器,这个是java.util.Random类

* 与java.lang.Math类中的random()方法有不一样的地方,彼方法返回一个0-1之间的随机数

* */

Random random=new Random();

int foodx=random.nextInt(maxX);

int foody=random.nextInt(maxY);

Node food=new Node(foodx,foody);

return food;

}

}

//文件三

package greedysnake_cx;

/**

* 在repaint()方法中,绘画上下文对象是从canvas对象使用getContentPane()获取的!!

* */

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.util.*;

public class GreedSnake implements KeyListener{

Canvas canvas;

private JLabel jlabel;

private JPanel jpanel;

private JFrame jframe;

SnakeModel snakemodel;

private final static int canvaswidth=400;

private final static int canvasheight=300;

private final static int nodewidth=10;

private final static int nodeheight=10;

//construction

GreedSnake(){

jframe=new JFrame("The Greed Sanke!");

jframe.setLayout(new BorderLayout());

Container cp=jframe.getContentPane();

//在jframe面板中添加各种组件

jlabel=new JLabel("welcome");

jlabel.setText("Welcome my friend! Enjoy your self!");

cp.add(jlabel,BorderLayout.NORTH);

canvas=new Canvas();

canvas.setSize(canvaswidth,canvasheight);

canvas.addKeyListener(this); //给空白面板添加键盘时间监听器!

cp.add(canvas,BorderLayout.CENTER);

jpanel=new JPanel();

jpanel.setLayout(new BorderLayout());

JLabel label=new JLabel("Pass enter or 'r' or 's' to start",JLabel.CENTER);

jpanel.add(label,BorderLayout.NORTH);

JLabel label2=new JLabel("Pass space to pause this game!",JLabel.CENTER);

jpanel.add(label2,BorderLayout.CENTER);

JLabel label3=new JLabel("Pass pageUp or pageDown to up or down the speed of the snake!",JLabel.CENTER);

jpanel.add(label3,BorderLayout.SOUTH);

cp.add(jpanel,BorderLayout.SOUTH);

//给顶层容器设置时间监听、可视化、关闭按钮的设定

jframe.addKeyListener(this);

jframe.pack();

jframe.setVisible(true);

jframe.setResizable(false);

jframe.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

begin();

}//end construction

public void begin(){

//开启一个SnakeModel的进程,并且开始改进程

snakemodel=new SnakeModel(this,canvaswidth/nodewidth,canvasheight/nodeheight);

(new Thread(snakemodel)).start();

}

void repaint(){

int score=snakemodel.getScore();

jlabel.setText("您的得分是:"+score);

Graphics g=canvas.getGraphics();///pay attention!

g.setColor(Color.white);

g.fillRect(0, 0, canvaswidth, canvasheight);

g.setColor(Color.blue);

LinkedList list=snakemodel.nodeArray;

for(int i=0;ilist.size();i++){

Node nn=(Node)list.get(i);

paintingNode(g,nn);

}

//绘制food

g.setColor(Color.green);

Node foodnode=new Node(snakemodel.food.x,snakemodel.food.y);

paintingNode(g,foodnode);

}

public void paintingNode(Graphics gg,Node n){

/*

* 使用Graphics 的fillRect方法,填充一个矩形,

* 矩形的起点需要乘以一个NODE的长宽,以避免重叠

* */

gg.fillRect(n.x*nodewidth, n.y*nodeheight,nodewidth-1,nodeheight-1);

}

public void keyPressed(KeyEvent e) {//按下某一个键时,调用此方法

int keycode=e.getKeyCode();

/* if(keycode==KeyEvent.VK_ENTER||keycode==KeyEvent.VK_R){

begin();

}*/

switch(keycode){

case KeyEvent.VK_LEFT:

snakemodel.chageDirection(SnakeModel.LEFT);

break;

case KeyEvent.VK_UP:

snakemodel.chageDirection(SnakeModel.UP);

break;

case KeyEvent.VK_RIGHT:

snakemodel.chageDirection(SnakeModel.RIGHT);

break;

case KeyEvent.VK_DOWN:

snakemodel.chageDirection(SnakeModel.DOWN);

break;

case KeyEvent.VK_PAGE_DOWN:

snakemodel.speedDown();

break;

case KeyEvent.VK_PAGE_UP:

snakemodel.speedUp();

break;

case KeyEvent.VK_ENTER:

case KeyEvent.VK_R:

begin();

break;

case KeyEvent.VK_SPACE:

case KeyEvent.VK_P:

snakemodel.chagePause();

default:

}//end switch

}//end keyPressed

public void keyReleased(KeyEvent e) {//释放某一个键时,调用此方法

}

public void keyTyped(KeyEvent e) {//键入某一个键时,调用此方法!

}

//main

public static void main(String[] args){

GreedSnake gs=new GreedSnake();

}

}

哪位能告诉我贪吃蛇游戏的全部代码?

//package main;

import java.awt.Color;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.awt.event.KeyEvent;

import java.awt.event.KeyListener;

import java.awt.event.WindowAdapter;

import java.awt.event.WindowEvent;

import java.io.BufferedReader;

import java.io.FileInputStream;

import java.io.FileOutputStream;

import java.io.InputStreamReader;

import javax.swing.ImageIcon;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

public class TanChiShe implements KeyListener,ActionListener{

/**

* @param args

*/

int max = 300;//蛇长最大值

final int JianJu = 15; //设定蛇的运动网格间距(窗口最大32*28格)

byte fangXiang = 4; //控制蛇的运动方向,初始为右

int time = 500; //蛇的运动间隔时间

int jianTime = 2;//吃一个减少的时间

int x,y;//蛇的运动坐标,按网格来算

int x2,y2;//暂存蛇头的坐标

int jiFenQi = 0;//积分器

boolean isRuned = false;//没运行才可设级别

boolean out = false;//没开始运行?

boolean run = false;//暂停运行

String JiBie = "中级";

JFrame f = new JFrame("贪吃蛇 V1.0");

JPanel show = new JPanel();

JLabel Message = new JLabel("级别:中级 蛇长:5 时间500ms 分数:00");

// JButton play = new JButton("开始");

JLabel sheTou;

JLabel shiWu;

JLabel sheWei[] = new JLabel[max];

static int diJi = 4; //第几个下标的蛇尾要被加上

ImageIcon shang = new ImageIcon("tuPian\\isSheTouUp.png");//产生四个上下左右的蛇头图案

ImageIcon xia = new ImageIcon("tuPian\\isSheTouDown.png");

ImageIcon zhuo = new ImageIcon("tuPian\\isSheTouLeft.png");

ImageIcon you = new ImageIcon("tuPian\\isSheTouRight.png");

JMenuBar JMB = new JMenuBar();

JMenu file = new JMenu("开始游戏");

JMenuItem play = new JMenuItem(" 开始游戏 ");

JMenuItem pause = new JMenuItem(" 暂停游戏 ");

JMenu hard = new JMenu("游戏难度");

JMenuItem gao = new JMenuItem("高级");

JMenuItem zhong = new JMenuItem("中级");

JMenuItem di = new JMenuItem("低级");

JMenu about = new JMenu(" 关于 ");

JMenuItem GF = new JMenuItem("※高分榜");

JMenuItem ZZ = new JMenuItem("关于作者");

JMenuItem YX = new JMenuItem("关于游戏");

JMenuItem QK = new JMenuItem("清空记录");

static TanChiShe tcs = new TanChiShe();

public static void main(String[] args) {

// TanChiShe tcs = new TanChiShe();

tcs.f();

}

public void f(){

f.setBounds(250,100,515,530);

f.setLayout(null);

f.setAlwaysOnTop(true);//窗口始终保持最前面

f.setBackground(new Color(0,0,0));

f.setDefaultCloseOperation(0);

f.setResizable(false);

f.setVisible(true);

// f.getContentPane().setBackground(Color.BLACK);

f.addWindowListener(new WindowAdapter(){

public void windowClosing(WindowEvent e){

System.exit(0);//退出程序

}

});

f.setJMenuBar(JMB);

JMB.add(file);

file.add(play);

file.add(pause);

JMB.add(hard);

hard.add(gao);

hard.add(zhong);

hard.add(di);

JMB.add(about);

about.add(GF);

GF.setForeground(Color.blue);

about.add(ZZ);

about.add(YX);

about.add(QK);

QK.setForeground(Color.red);

f.add(show);

show.setBounds(0,f.getHeight()-92,f.getWidth(),35);

// show.setBackground(Color.green);

// f.add(play);

// play.setBounds(240,240,80,25);

play.addActionListener(this);

pause.addActionListener(this);

gao.addActionListener(this);

zhong.addActionListener(this);

di.addActionListener(this);

GF.addActionListener(this);

ZZ.addActionListener(this);

YX.addActionListener(this);

QK.addActionListener(this);

show.add(Message);

Message.setForeground(Color.blue);

f.addKeyListener(this);

// show.addKeyListener(this);

play.addKeyListener(this);

sheChuShi();

}

public void sheChuShi(){//蛇初始化

sheTou = new JLabel(you);//用向右的图来初始蛇头

f.add(sheTou);

sheTou.setBounds(JianJu*0,JianJu*0,JianJu,JianJu);

// System.out.println("ishere");

shiWu = new JLabel("■");

f.add(shiWu);

shiWu.setBounds(10*JianJu,10*JianJu,JianJu,JianJu);

for(int i=0;i=diJi;i++) {

sheWei[i] = new JLabel("■");

f.add(sheWei[i]);

sheWei[i].setBounds(-1*JianJu,0*JianJu,JianJu,JianJu);

}

while(true){

if(out == true){

yunXing();

break;

}

try{

Thread.sleep(200);

}catch(Exception ex){

ex.printStackTrace();

}

}

}

public void sheJiaChang(){//蛇的长度增加

if(diJi max){

sheWei[++diJi] = new JLabel(new ImageIcon("tuPian\\isSheWei.jpg"));

f.add(sheWei[diJi]);

sheWei[diJi].setBounds(sheWei[diJi-1].getX(),sheWei[diJi-1].getY(),JianJu,JianJu);

// System.out.println("diJi "+diJi);

}

}

public void pengZhuanJianCe(){//检测蛇的碰撞情况

if(sheTou.getX()0 || sheTou.getY()0 ||

sheTou.getX()f.getWidth()-15 || sheTou.getY()f.getHeight()-105 ){

gameOver();

// System.out.println("GameOVER");

}

if(sheTou.getX() == shiWu.getX() sheTou.getY() == shiWu.getY()){

out: while(true){

shiWu.setLocation((int)(Math.random()*32)*JianJu,(int)(Math.random()*28)*JianJu);

for(int i=0;i=diJi;i++){

if(shiWu.getX()!= sheWei[i].getX() shiWu.getY()!=sheWei[i].getY()

sheTou.getX()!=shiWu.getX() sheTou.getY()!= shiWu.getY()){//如果食物不在蛇身上则退出循环,产生食物成功

break out;

}

}

}

sheJiaChang();

// System.out.println("吃了一个");

if(time100 ){

time -= jianTime;

}

else{}

Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+" 时间:"+time+"ms 分数:"+(jiFenQi+=10)+"");

}

for(int i=0;i=diJi;i++){

if(sheTou.getX() == sheWei[i].getX() sheTou.getY() == sheWei[i].getY()){

gameOver();

// System.out.println("吃到尾巴了");

}

}

}

public void yunXing(){

while(true){

while(run){

if(fangXiang == 1){//上

y-=1;

}

if(fangXiang == 2){//下

y+=1;

}

if(fangXiang == 3){//左

x-=1;

}

if(fangXiang == 4){//右

x+=1;

}

x2 = sheTou.getX();

y2 = sheTou.getY();

sheTou.setLocation(x*JianJu,y*JianJu); //设置蛇头的坐标 网格数*间隔

for(int i=diJi;i=0;i--){

if(i==0){

sheWei[i].setLocation(x2,y2);

// System.out.println(i+" "+sheTou.getX()+" "+sheTou.getY());

}

else{

sheWei[i].setLocation(sheWei[i-1].getX(),sheWei[i-1].getY());

// System.out.println(i+" "+sheWei[i].getX()+" "+sheWei[i].getY());

}

}

pengZhuanJianCe();

try{

Thread.sleep(time);

}catch(Exception e){

e.printStackTrace();

}

}

Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+" 时间:"+time+"ms 分数:"+(jiFenQi+=10)+"");

try{

Thread.sleep(200);

}catch(Exception e){

e.printStackTrace();

}

}

}

public void gameOver(){//游戏结束时处理

int in = JOptionPane.showConfirmDialog(f,"游戏已经结束!\n是否要保存分数","提示",JOptionPane.YES_NO_OPTION);

if(in == JOptionPane.YES_OPTION){

// System.out.println("YES");

String s = JOptionPane.showInputDialog(f,"输入你的名字:");

try{

FileInputStream fis = new FileInputStream("GaoFen.ini");//先把以前的数据读出来加到写的数据前

InputStreamReader isr = new InputStreamReader(fis);

BufferedReader br = new BufferedReader(isr);

String s2,setOut = "";

while((s2=br.readLine())!= null){

setOut =setOut+s2+"\n";

}

FileOutputStream fos = new FileOutputStream("GaoFen.ini");//输出到文件流

s = setOut+s+":"+jiFenQi+"\n";

fos.write(s.getBytes());

}catch(Exception e){}

}

System.exit(0);

}

public void keyTyped(KeyEvent arg0) {

// TODO 自动生成方法存根

}

public void keyPressed(KeyEvent arg0) {

// System.out.println(arg0.getSource());

if(arg0.getKeyCode() == KeyEvent.VK_UP){//按上下时方向的值相应改变

if(fangXiang != 2){

fangXiang = 1;

// sheTou.setIcon(shang);//设置蛇的方向

}

// System.out.println("UP");

}

if(arg0.getKeyCode() == KeyEvent.VK_DOWN){

if(fangXiang != 1){

fangXiang = 2;

// sheTou.setIcon(xia);

}

// System.out.println("DOWN");

}

if(arg0.getKeyCode() == KeyEvent.VK_LEFT){//按左右时方向的值相应改变

if(fangXiang != 4){

fangXiang = 3;

// sheTou.setIcon(zhuo);

}

// System.out.println("LEFT");

}

if(arg0.getKeyCode() == KeyEvent.VK_RIGHT){

if(fangXiang != 3){

fangXiang = 4;

// sheTou.setIcon(you);

}

// System.out.println("RIGHT");

}

}

public void keyReleased(KeyEvent arg0) {

// TODO 自动生成方法存根

}

public void actionPerformed(ActionEvent arg0) {

// TODO 自动生成方法存根

JMenuItem JI = (JMenuItem)arg0.getSource();

if(JI == play){

out = true;

run = true;

isRuned = true;

gao.setEnabled(false);

zhong.setEnabled(false);

di.setEnabled(false);

}

if(JI == pause){

run = false;

}

if(isRuned == false){//如果游戏还没运行,才可以设置级别

if(JI == gao){

time = 200;

jianTime = 1;

JiBie = "高级";

Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+" 时间:"+time+"ms 分数:"+jiFenQi);

}

if(JI == zhong){

time = 400;

jianTime = 2;

JiBie = "中级";

Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+" 时间:"+time+"ms 分数:"+jiFenQi);

}

if(JI == di){

time = 500;

jianTime = 3;

JiBie = "低级";

Message.setText("级别:"+JiBie+" 蛇长:"+(diJi+2)+" 时间:"+time+"ms 分数:"+jiFenQi);

}

}

if(JI == GF){

try{

FileInputStream fis = new FileInputStream("GaoFen.ini");

InputStreamReader isr = new InputStreamReader(fis);

BufferedReader br = new BufferedReader(isr);

String s,setOut = "";

while((s=br.readLine())!= null){

setOut =setOut+s+"\n";

}

if(setOut.equals("")){

JOptionPane.showMessageDialog(f,"暂无保存记录!","高分榜",JOptionPane.INFORMATION_MESSAGE);

}

else{

JOptionPane.showMessageDialog(f,setOut);

}

}catch(Exception e){

e.printStackTrace();

}

}

if(JI == ZZ){//关于作者

JOptionPane.showMessageDialog(f,"软件作者:申志飞\n地址:四川省绵阳市\nQQ:898513806\nE-mail:shenzhifeiok@126点抗 ","关于作者",JOptionPane.INFORMATION_MESSAGE);

}

if(JI == YX){//关于游戏

JOptionPane.showMessageDialog(f,"贪吃蛇游戏\n游戏版本 V1.0","关于游戏",JOptionPane.INFORMATION_MESSAGE);

}

if(JI == QK){

try{

int select = JOptionPane.showConfirmDialog(f,"确实要清空记录吗?","清空记录",JOptionPane.YES_OPTION);

if(select == JOptionPane.YES_OPTION){

String setOut = "";

FileOutputStream fos = new FileOutputStream("GaoFen.ini");//输出到文件流

fos.write(setOut.getBytes());

}

}catch(Exception ex){}

}

}

}

//是我自己写的,本来里面有图片的,但无法上传,所以把图片去掉了,里面的ImageIcon等语句可以去掉。能正常运行。

贪吃蛇 java代码

import java.awt.*;

import javax.swing.*;

import java.awt.event.*;

import java.util.*;

public class SnakeGame extends JFrame implements KeyListener{

private int stat=1,direction=0,bodylen=6,headx=7,heady=8,

tailx=1,taily=8,tail,foodx,foody,food;//初始化定义变量

public final int EAST=1,WEST=2,SOUTH=3,NORTH=4;//方向常量

int [][] fillblock=new int [20][20];//定义蛇身所占位置

public SnakeGame() {//构造函数

super("贪吃蛇");

setSize(510,510);

setVisible(true);//设定窗口属性

addKeyListener(this);//添加监听

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

for(int i=1;i=7;i++) fillblock[i][8]=EAST;//初始化蛇身属性

direction=EAST;//方向初始化的设置

FoodLocate(); //定位食物

while (stat==1){

fillblock[headx][heady]=direction;

switch(direction){

case 1:headx++;break;

case 2:headx--;break;

case 3:heady++;break;

case 4:heady--;break;

}//蛇头的前进

if(heady19||headx19||tailx19||taily19||heady0||headx0||tailx0||taily0||fillblock[headx][heady]!=0){

stat=0;

break;

} //判断游戏是否结束

try{

Thread.sleep(150); }

catch(InterruptedException e){}//延迟

fillblock[headx][heady]=direction;

if(headx==foodxheady==foody){//吃到食物

FoodLocate();

food=2;

try{

Thread.sleep(100); }

catch(InterruptedException e){}//延迟

}

if(food!=0)food--;

else{tail=fillblock[tailx][taily];

fillblock[tailx][taily]=0;//蛇尾的消除

switch(tail){

case 1:tailx++;break;

case 2:tailx--;break;

case 3:taily++;break;

case 4:taily--;break;

}//蛇尾的前进

}

repaint();

}

if(stat==0)

JOptionPane.showMessageDialog(null,"GAME OVER","Game Over",JOptionPane.INFORMATION_MESSAGE);

}

public void keyPressed(KeyEvent e) {//按键响应

int keyCode=e.getKeyCode();

if(stat==1) switch(keyCode){

case KeyEvent.VK_UP:if(direction!=SOUTH) direction=NORTH;break;

case KeyEvent.VK_DOWN:if(direction!=NORTH)direction=SOUTH;break;

case KeyEvent.VK_LEFT:if(direction!=EAST)direction=WEST;break;

case KeyEvent.VK_RIGHT:if (direction!=WEST)direction=EAST;break;

}

}

public void keyReleased(KeyEvent e){}//空函数

public void keyTyped(KeyEvent e){} //空函数

public void FoodLocate(){//定位食物坐标

do{

Random r=new Random();

foodx=r.nextInt(20);

foody=r.nextInt(20);

}while (fillblock[foodx][foody]!=0);

}

public void paint(Graphics g){//画图

super.paint(g);

g.setColor(Color.BLUE);

for(int i=0;i20;i++)

for(int j=0;j20;j++)

if (fillblock[i][j]!=0)

g.fillRect(25*i+5,25*j+5,24,24);

g.setColor(Color.RED);

g.fillRect(foodx*25+5,foody*25+5,24,24);

}

public static void main(String[] args) {//主程序

SnakeGame application=new SnakeGame();

}

}


新闻名称:java贪吃蛇登录代码 java贪吃蛇代码网盘
URL链接:http://bjjierui.cn/article/ddgssjd.html

其他资讯