资源简介
猜单词 猜错7次就开始左右摆动人,猜对 选择下一个单词进行游戏。
代码片段和文件信息
package 事件异常驱动设计;
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class 刽子手 extends Jframe {
private ManPanel canvas = new ManPanel();
public 刽子手() {
this.add(canvas BorderLayout.CENTER); //将人物放入界面
}
public static void main(String[] args) {
Jframe frame = new 刽子手();
frame.settitle(“KillerGame“);
frame.setLocationRelativeTo(null); // Center the frame
frame.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
frame.setSize(450 280);
frame.setVisible(true);
}
class ManPanel extends JPanel {
int ballRadius = 10;
int leftAngle = 120;
int rightAngle = 60;
int angle = 90; // 从中间开始摆动
int angleDelta = 1; // 摆动角度的速度
int delay = 100;
Timer timer = new Timer(delay new ActionListener() {
public void actionPerformed(ActionEvent e) {
repaint();
}
});
ManPanel() {
setNewHiddenWord();
this.addKeyListener(new KeyAdapter() {
public void keyPressed(KeyEvent e) {
char letter = e.getKeyChar();
if (letter == KeyEvent.VK_ENTER) {
// 新游戏开始
setNewHiddenWord();
} else if (Character.isLowerCase(letter)) {
processAGuessedLetter(letter);
if (numberOfMisses == 7)
timer.start();
else
timer.stop();
}
repaint();
}
});
setFocusable(true);
}
protected void paintComponent(Graphics g) {
super.paintComponent(g);
g.setFont(new Font(“TimesRoman“ Font.BOLD 20));
if (isFinished) {
//显示所猜的单词
g.drawString(“The word is: “ + guessedWord.toString() 120
210);
g.drawString(“To continue the game press ENTER“ 120 230);
} else {
// 显示所猜的单词
g.drawString(“Guess a word: “ + guessedWord.toString() 120
210);
if (numberOfMisses > 0)
g.drawString(“Missed letters: “ + missedLetters.toString()
120 230);
}
g.drawArc(20 200 80 40 0 180); // Draw the base
g.drawLine(20 + 40 200 20 + 40 20); // Draw the pole
g.drawLine(20 + 40 20 20 + 40 + 100 20); // Draw the hanger
if (numberOfMisses == 7) {
if (angle < rightAngle)
angleDelta = 1;
else if (angle > leftAngle)
angleDelta = -1;
angle += angleDelta;
}
if (numberOfMisses < 1)
return;
int x1 = 20 + 40 + 100;
int y1 = 20;
int radius = 20;
int x = x1 + (int) (radius * Math.cos(Math.toRadians(angle)));
int y = y1 + (int) (radius * Math.sin(Math.toRadians(angle)));
g.drawLine(20 + 40 + 100 20 x y); // Draw the hanger
if (numberOfMisses < 2)
return;
double length = 20 + 20;
x = x1 + (int) (length * Math.cos(Math.toRadians(angle)));
y = y1 + (int) (length * Math.sin(Math.toRadians(angle)));
g.drawOval(x - radius y - rad
- 上一篇:java 设计模式之绘图程序
- 下一篇:人力资源管理系统带数据库
相关资源
- 微博系统(Java源码,servlet+jsp),适
- java串口通信全套完整代码-导入eclip
- jsonarray所必需的6个jar包.rar
- 三角网构TIN生成算法,Java语言实现
- java代码编写将excel数据导入到mysql数据
- Java写的cmm词法分析器源代码及javacc学
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
评论
共有 条评论