呵呵……功能基本上都有!
我没事的时候做的!小小的自我夸奖一下!发表了希望大家能够参考 //主类
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 BufferedWriter bw=null; try { fw=new FileWriter(\"D:/Recording.txt\"); bw=new BufferedWriter(fw); for(int i=0;i 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 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 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;i 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() .getX())||(w.getX()+w.getWidth() if(w.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() if(w.getY()+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; case 3: if((w.getY()>point.getY()&&w.getY() 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=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;i 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
本站由北京市万商天勤律师事务所王兴未律师提供法律服务