贪吃蛇源代码

  • 格式: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);

}