贪吃蛇源代码
- 格式:docx
- 大小:16.31 KB
- 文档页数:9
//本程序用于初学者间的学习和交流,程序粗糙简陋在刷新重画时总出现白条画面,希望大家能提出宝贵意见。QQ:609429837
import java.awt.Color;
import java.awt.Graphics;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.ArrayList;
import javax.swing.ButtonGroup;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JRadioButton;
public class myTcs extends JFrame implements ActionListener, KeyListener,
Runnable {
// private Graphics g;
// private JPanel jp;
File file = new File("分数.txt");
ArrayList re = null;// 用于存储得分
String fenshu = null;// 用于显示得分
private JMenuBar menuBar;
private JMenu youXiMenu, nanDuMenu, fenShuMenu, guanYuMenu;
private JMenuItem kaiShiYouXi, exitItem, zuoZheItem, fenShuItem,
maxfenShuItem;
private JRadioButton cJianDan, cPuTong, cKunNan;
private ButtonGroup bg = new ButtonGroup();
private int m[] = new int[60];
private int n[] = new int[60];
private Thread she = null;
private int life = 3;// 生命数量
private int length = 6;// 蛇的长度 private static int foods = 0;// 本局吃了多少苹果
private boolean isApple = false;// 蛇要吃的苹果
private static int maxfenshu = 0;// 本局等分
private int x = 230;
private int y = 200;
private int time = 500;// 用于设置难易程度
private String direction = "right";// 蛇运动的方向
// 构造方法
public myTcs() {
// 实例化组件
// jp=new JPanel();
menuBar = new JMenuBar();
youXiMenu = new JMenu("游戏");
nanDuMenu = new JMenu("难度");
fenShuMenu = new JMenu("分数");
guanYuMenu = new JMenu("关于");
kaiShiYouXi = new JMenuItem("开始");
exitItem = new JMenuItem("退出");
cJianDan = new JRadioButton("简单");
cPuTong = new JRadioButton("普通");
cKunNan = new JRadioButton("困难");
zuoZheItem = new JMenuItem("作者");
fenShuItem = new JMenuItem("上局得分");
maxfenShuItem = new JMenuItem("最高得分");
// 添加组件
menuBar.add(youXiMenu);
menuBar.add(nanDuMenu);
menuBar.add(fenShuMenu);
menuBar.add(guanYuMenu);
youXiMenu.add(kaiShiYouXi);
youXiMenu.add(exitItem);
bg.add(cJianDan);
bg.add(cPuTong);
bg.add(cKunNan);
nanDuMenu.add(cJianDan);
nanDuMenu.add(cPuTong);
nanDuMenu.add(cKunNan);
fenShuMenu.add(fenShuItem);
fenShuMenu.add(maxfenShuItem);
guanYuMenu.add(zuoZheItem);
// 添加监听
kaiShiYouXi.addActionListener(this);
exitItem.addActionListener(this);
cJianDan.addActionListener(this);
cPuTong.addActionListener(this);
cKunNan.addActionListener(this);
fenShuItem.addActionListener(this);
maxfenShuItem.addActionListener(this);
zuoZheItem.addActionListener(this);
addKeyListener(this);
// 设置窗体
this.setJMenuBar(menuBar);
this.setVisible(true);
this.setSize(400, 400);
this.setLocation(100, 100);
this.setTitle("贪吃蛇");
this.setResizable(false);
this.validate();
this.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
public static void main(String aa[]) {
new myTcs();
}
@Override
public void actionPerformed(ActionEvent e) {
if ("开始".equals(e.getActionCommand())) {
this.isApple = true;
life = 3;
if (she == null) {
// System.out.println(x + " " + y);
she = new Thread(this);
she.start(); } else if (she != null) {
she = null;
she = new Thread(this);
she.start();
}
}
if ("退出".equals(e.getActionCommand())) {
System.exit(0);
}
if ("简单".equals(e.getActionCommand())) {
time = 1000;
}
if ("普通".equals(e.getActionCommand())) {
time = 500;
}
if ("困难".equals(e.getActionCommand())) {
time = 200;
}
if ("上局得分".equals(e.getActionCommand())) {
this.defen();
JOptionPane.showMessageDialog(this, fenshu);
}
if ("最高得分".equals(e.getActionCommand())) {
this.defen();
JOptionPane.showMessageDialog(this, maxfenshu);
}
if ("作者".equals(e.getActionCommand())) {
JOptionPane.showMessageDialog(this, "制作: 飞" + "\r\n"
+ "QQ: 609429837" + "\n");
}
this.repaint();// 重画
}
// 绘图
public void paint(Graphics g) {
super.paint(g);
// g.setColor(Color.DARK_GRAY); // 设置背景
g.fillRect(0, 50, 400, 400);
g.setColor(Color.BLUE);
for (int i = 0; i <= length - 1; i++) {
g.fillRect(m[i], n[i], 10, 10);
}