您好,欢迎来到华佗小知识。
搜索
您的当前位置:首页Java贪吃蛇游戏代码

Java贪吃蛇游戏代码

来源:华佗小知识
作者:冷月

呵呵……功能基本上都有!

我没事的时候做的!小小的自我夸奖一下!发表了希望大家能够参考 //主类

package com.test; import java.awt.*; import javax.swing.*; import java.awt.event.*; import java.io.*;

import java.util.ArrayList;

public class Worm extends JFrame implements ActionListener{ JMenuBar jmb; JMenu jm1;

JMenuItem jmi1,jmi2,jmi3,jmi4,jmi5,jmi6; Wormpanel wp; JPanel jp;

public static void main(String args[]) {

Worm w=new Worm();

}

public Worm()

{ jmb=new JMenuBar(); jm1=new JMenu(\"菜单\"); jmi6=new JMenuItem(\"新游戏\"); jmi6.addActionListener(this); jmi1=new JMenuItem(\"继续\"); jmi1.addActionListener(this); jmi2=new JMenuItem(\"暂停\"); jmi2.addActionListener(this); jmi3=new JMenuItem(\"存盘退出\"); jmi3.addActionListener(this); jmi5=new JMenuItem(\"接着上一次玩\"); jmi5.addActionListener(this); jmi4=new JMenuItem(\"退出\"); jmi4.addActionListener(this); jp=new JPanel() {

public void paint(Graphics g){

g.setFont(new Font(\"宋体\ g.drawString(\"play\ }

};

jm1.add(jmi6); jm1.add(jmi1); jm1.add(jmi2); jm1.add(jmi3); jm1.add(jmi5); jm1.add(jmi4); jmb.add(jm1);

this.setJMenuBar(jmb);

this.add(jp);

this.setSize(650,500); this.setVisible(true);

this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); }

public void actionPerformed(ActionEvent e) { if(e.getSource()==jmi6)

{System.out.println(\"ok\"); wp=new Wormpanel(); this.addKeyListener(wp); this.add(wp);

this.setVisible(true); }

if(e.getSource()==jmi4) {

System.exit(0); }

if(e.getSource()==jmi2) {

this.wp.setSpeed(0); }

if(e.getSource()==jmi1) {

this.wp.setSpeed(1); }

if(e.getSource()==jmi3) {

ArrayList al=this.wp.vp; FileWriter fw=null;

BufferedWriter bw=null; try {

fw=new FileWriter(\"D:/Recording.txt\"); bw=new BufferedWriter(fw); for(int i=0;iWormpoint wm=al.get(i); if(i==0) {

int dire=wm.getDirestion(); bw.write(dire+\"\\r\\n\"); }

int x=wm.getX(); int y=wm.getY();

bw.write(x+\" \"+y+\"\\r\\n\"); }

} catch (IOException args) {

args.printStackTrace(); }finally{

try {

bw.flush(); bw.close(); fw.close(); System.exit(0);

} catch (IOException args) { args.printStackTrace(); } } }

if(e.getSource()==jmi5) { wp=new Wormpanel(); this.addKeyListener(wp); this.add(wp);

this.setVisible(true);

ArrayList al=new ArrayList(); FileReader fr=null; BufferedReader br=null; try {

fr=new FileReader(\"D:/Recording.txt\"); br=new BufferedReader(fr); String st;

st=br.readLine();

Wormpoint head=new Wormpoint();

head.setDirestion(Integer.parseInt(st)); st=br.readLine();

String shead[]=st.split(\" \");

head.setX(Integer.parseInt(shead[0])); head.setY(Integer.parseInt(shead[1])); al.add(head);

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

Wormpoint wm=new Wormpoint(); String str[]=st.split(\" \"); wm.setX(Integer.parseInt(str[0])); wm.setY(Integer.parseInt(str[1])); al.add(wm); }

this.wp.vp=al;

} catch (IOException args) {

args.printStackTrace(); }finally{

try {

br.close(); fr.close();

} catch (IOException args) { args.printStackTrace(); } } } } }

//面板类 进行界面操作

package com.test; import java.awt.*; import java.awt.List;

import java.awt.event.KeyEvent; import java.awt.event.KeyListener; import java.util.*; import java.util.Timer;

import javax.swing.*;

public class Wormpanel extends JPanel implements KeyListener{ ArrayList vp=new ArrayList(); Wormpoint point; Wormpoint wp; String reco; int speed;

boolean ismove=true; Recorder recor;

public int getSpeed() { return speed; }

public void setSpeed(int speed) { this.speed = speed; }

public Wormpanel() { speed=1;

recor=new Recorder(); recor.filereader(); reco=recor.recorder;

point=new Wormpoint(); point.setWidth(10);

point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); for(int i=0;iwp=new Wormpoint(); wp.setX(20);

wp.setY(20-wp.getWidth()); vp.add(wp); }

Timer t=new Timer();

t.schedule(new Mytask(), 0,100); }

public void touch() {boolean b=false; Wormpoint w=vp.get(0); switch(w.getDirestion()) {case

1:

if((w.getX()point

.getX())||(w.getX()+w.getWidth()point.getX())) {

if(w.getY()point.getY())

{ System.out.print(\"touch\");

ismove=false;

point=new Wormpoint(); point.setWidth(10);

point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } }

if(recor.getcount()*10>Integer.parseInt(reco)) {

recor.filewriter(); }

break;

case 2:

if((w.getX()point.getX())||(w.getX()+w.getWidth()point.getX())) {

if(w.getY()+w.getWidth()point.getY()) {

ismove=false;

point=new Wormpoint(); point.setWidth(10);

point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } }

if(recor.getcount()*10>Integer.parseInt(reco)) {

recor.filewriter();

} break; case

3:

if((w.getY()>point.getY()&&w.getY()point.getY()&&w.getY()+w.getWidth()if(w.getX()>point.getX()&&w.getX()ismove=false;

point=new Wormpoint(); point.setWidth(10);

point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } }

if(recor.getcount()*10>Integer.parseInt(reco)) {

recor.filewriter(); } break; case

4:if((w.getY()>point.getY()&&w.getY()point.getY()&&w.getY()+w.getWidth()if(w.getX()+w.getWidth()>point.getX()&&w.getX()+w.getWidth()ismove=false;

point=new Wormpoint(); point.setWidth(10);

point.setX((int)(Math.random()*450)); point.setY((int)(Math.random()*380)); Wormpoint.length++; recor.cadd(); } }

if(recor.getcount()*10>Integer.parseInt(reco))

{

recor.filewriter(); }

break; } }

public void paint(Graphics g) {

super.paint(g);

g.fillRect(0, 0,450, 400); g.setColor(Color.cyan); if(!point.isIseate()) {g.fillOval(point.getX(), point.getWidth(), point.getWidth()); }

g.setColor(Color.DARK_GRAY);

point.getY(),

g.setFont(new Font(\"宋体\

g.drawString(\"我的得分:\"+recor.getcount()*10, 460, 50);

g.drawString(\"我的记录:\"+reco, 460, 80); Wormpoint w;

for(int i=0;ig.setColor(Color.red); g.fill3DRect(w.getX(), w.getWidth(),w.getWidth() ,false); g.setColor(Color.black); g.drawRect(w.getX(), w.getWidth(),w.getWidth() ); } }

class Mytask extends TimerTask{

public void run() {

Wormpoint w=vp.get(0);

w.getY(),

w.getY(), Wormpoint xin=new Wormpoint(); int direct=w.getDirestion();

switch(direct) {

case 1: xin.setX(w.getX());

xin.setDirestion(w.getDirestion()); xin.setY(w.getY()-w.getWidth()*speed); if(xin.getY()<=0)

xin.setY(400-xin.getWidth());

break; //up case 2: xin.setX(w.getX());

xin.setDirestion(w.getDirestion()); xin.setY(w.getY()+w.getWidth()*speed); if(xin.getY()+xin.getWidth()>=400) xin.setY(0); break; //down

case 3: xin.setX(w.getX()-w.getWidth()*speed); xin.setDirestion(w.getDirestion()); xin.setY(w.getY()); if(xin.getX()<=0)

xin.setX(450-xin.getWidth()); break; //left

case 4: xin.setX(w.getX()+w.getWidth()*speed); xin.setDirestion(w.getDirestion()); xin.setY(w.getY());

if(xin.getX()+xin.getWidth()>=450) xin.setX(0); break; //right }

vp.add(0,xin); touch();

if(ismove&&speed!=0) vp.remove(vp.size()-1); ismove=true; repaint(); }

}

public void keyPressed(KeyEvent e) { if(e.getKeyCode()==e.VK_UP) {

vp.get(0).setDirestion(1); //up }

if(e.getKeyCode()==e.VK_DOWN) {

vp.get(0).setDirestion(2);//down }

if(e.getKeyCode()==e.VK_LEFT) {

vp.get(0).setDirestion(3);//left }

if(e.getKeyCode()==e.VK_RIGHT) {

vp.get(0).setDirestion(4); } }

public void keyReleased(KeyEvent e) { // TODO Auto-generated method stub }

public void keyTyped(KeyEvent e) { // TODO Auto-generated method stub } } //单元类

package com.test;

public class Wormpoint { private int x; private int y;

private int direstion=2; static int length=5;

private boolean iseate=false; public boolean isIseate() { return iseate;

}

public void setIseate(boolean iseate) { this.iseate = iseate; }

public int getLength() { return length; }

public void setLength(int length) { this.length = length; }

private int width=8; public int getWidth() { return width; }

public void setWidth(int width) { this.width = width; }

public int getDirestion() { return direstion; }

public void setDirestion(int direstion) { this.direstion = direstion;

}

public int getX() { return x; }

public void setX(int x) { this.x = x; }

public int getY() { return y; }

public void setY(int y) { this.y = y; } }

//记录类

package com.test; import java.io.*; public class Recorder { private int count=0; public String recorder; public void cadd() {

count++; }

public int getcount() {

return count; }

public void filereader() {

FileReader fr; BufferedReader br; try {

fr=new FileReader(\"D:/Recorder.txt\"); br=new BufferedReader(fr); recorder=br.readLine(); } catch (Exception e) {

e.printStackTrace(); } }

public void filewriter() {

FileWriter fw=null; BufferedWriter bw=null; try {

fw=new FileWriter(\"D:/Recorder.txt\"); bw=new BufferedWriter(fw);

bw.write(\"\"+(this.getcount()*10));

} catch (IOException e) {

e.printStackTrace();

}finally{ try {

bw.flush(); bw.close(); fw.close();

} catch (IOException e) { e.printStackTrace(); } } } }

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo0.cn 版权所有 湘ICP备2023017654号-2

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务