package snake;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
public class SnakeFrame extends JFrame
{
private static final long serialVersionUID = 1L;
private JMenuItem NewGameItem;
private JMenuItem PauseGameItem;
private JMenuItem ExitGameItem;
private JMenu jMenu0;
private JMenuItem SlowItem;
private JMenuItem MidItem;
private JMenuItem FastItem;
private JMenu jMenu1;
private JMenuBar jMenuBar0;
private Snake snake;
private SnakePanel snakePanel;
public static int SLOW=200;
public static int MID=150;
public static int FAST=100;
Thread control;
public SnakeFrame()
{
initComponents();
}
private void initComponents() {
setTitle("贪吃蛇");
setFocusTraversalPolicyProvider(true);
addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent event) {
keyKeyPressed(event);
}
});
addWindowListener(new WindowAdapter()
{
public void windowClosing(WindowEvent e)
{
System.out.println("退出游戏!");
control=null;
System.exit(0);
}
});
jMenuBar0 = new JMenuBar();
jMenu1 = new JMenu();
FastItem = new JMenuItem();
jMenu0 = new JMenu();
MidItem = new JMenuItem();
SlowItem = new JMenuItem();
PauseGameItem = new JMenuItem();
NewGameItem = new JMenuItem();
ExitGameItem = new JMenuItem("退出");
setJMenuBar(jMenuBar0);
setBounds(100,100,410, 310);
setResizable(false);
jMenuBar0.add(jMenu0);
jMenuBar0.add(jMenu1);
jMenu1.setText("等级");
jMenu1.add(SlowItem);
jMenu1.add(MidItem);
jMenu1.add(FastItem);
FastItem.setText("高级");
jMenu0.setText("游戏");
jMenu0.setFocusable(false);
jMenu0.add(NewGameItem);
jMenu0.add(PauseGameItem);
jMenu0.add(ExitGameItem);
MidItem.setText("中级");
SlowItem.setText("初级");
PauseGameItem.setText("暂停");
NewGameItem.setText("新游戏");
FastItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
snake.SPEED = SnakeFrame.FAST;
}
});
MidItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
snake.SPEED = SnakeFrame.MID;
}
});
SlowItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
snake.SPEED = SnakeFrame.SLOW;
}
});
ExitGameItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
System.out.println("退出游戏!");
control=null;
System.exit(0);
}
});
PauseGameItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
snake.pause();
}
});
NewGameItem.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent event)
{
int speed = snake.SPEED;
snake=new Snake();
snakePanel.setSnake(snake);
snake.SPEED = speed;
control = new Thread(snakePanel);
control.start();
snake.pause();
}
});
snake = new Snake();
snakePanel = new SnakePanel(snake);
control = new Thread(snakePanel);
control.start();
add(snakePanel);
validate();
}
private void keyKeyPressed(KeyEvent event) {
switch (event.getKeyCode())
{
case KeyEvent.VK_UP:
snake.changeDirection(Snake.UP);
break;
case KeyEvent.VK_DOWN:
snake.changeDirection(Snake.DOWN);
break;
case KeyEvent.VK_LEFT:
snake.changeDirection(Snake.LEFT);
break;
case KeyEvent.VK_RIGHT:
snake.changeDirection(Snake.RIGHT);
break;
case KeyEvent.VK_SPACE:
snake.pause();
break;
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
资源名称:Chinese Chess game made by Java GUI. Java-GUI制作的象棋游戏.zip简介:本资源是一个基于Java图形用户界面(GUI)开发的中国象棋游戏项目。它不仅为象棋爱好者提供了一个友好的对弈平台,同时也为学习Java编程和GUI设计的开发者们提供了宝贵的实践材料。该游戏实现了象棋的基本规则与逻辑,包括棋子的移动、吃子、将军以及胜负判断等核心功能。用户可以通过直观的图形界面进行人机对战或双人对战,享受下棋的乐趣。此外,项目的代码结构清晰,注释详尽,非常适合初学者学习和参考。通过研究和分析这个资源,你可以深入了解Java在开发桌面应用程序方面的应用,特别是Swing库的使用。同时,它也是理解面向对象编程原则和设计模式在实际项目中运用的好案例。最重要的是,这个资源完全免费,可以作为个人学习、教学演示或是编程爱好者的项目练手之用。它是一个不可多得的学习资源,旨在帮助用户提升编程技能,尤其是在Java GUI开发领域。
资源推荐
资源详情
资源评论
收起资源包目录
Java版贪吃蛇游戏.zip (21个子文件)
projectcode1020
.classpath 295B
Snake.jar 13KB
.settings
org.eclipse.jdt.core.prefs 587B
src
snake
Snake.java 3KB
SnakePanel.java 2KB
SnakeFrame.java 4KB
SnakeMain.java 229B
bin
snake
SnakeFrame$7.class 756B
SnakeFrame$4.class 779B
SnakePanel.class 3KB
SnakeFrame$3.class 780B
Snake.class 4KB
Node.class 464B
SnakeFrame.class 4KB
SnakeFrame$8.class 1KB
SnakeFrame$2.class 868B
SnakeFrame$5.class 780B
SnakeFrame$1.class 693B
SnakeFrame$6.class 899B
SnakeMain.class 504B
.project 364B
共 21 条
- 1
资源评论
葡萄籽儿
- 粉丝: 122
- 资源: 80
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功