java 方块_哈工大java实验 移动小方块
/*java第二次实验
* 移动小方块
*/
import javax.swing.*;
import java.awt.event.*;
import java.awt.geom.*;
import java.awt.*;
public class Game {
public static void main(String[] args) {
GameFrame MyFrame = new GameFrame();
MyFrame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
MyFrame.setVisible(true);
}
}
class GameFrame extends JFrame {
private int flag = 0;
private double xPos[] = { 0, 0, 270, 0, 270 };
private double yPos[] = { 0, 0, 0, 270, 270 };
private double arriver[] = { 0, 0, 0, 0, 0 };
private Rectangle2D rect[] = new Rectangle2D[5];
public GameFrame() {
GamePanel MyPanel = new GamePanel();
addKeyListener(new GameKeyListener());// 增加监听器
this.add(MyPanel);
setSize(308, 334);
}
class GamePanel extends JPanel {
public GamePanel() {
}
public void paint(Graphics g) {
super.paint(g);
Graphics2D g2 = (Graphics2D) g;
for (int i = 1; i <= 4; i++) {
rect[i] = new Rectangle2D.Double(xPos[i], yPos[i], 30f, 30f);
}
ColorMovingPaint(g2);
MiddlePaint(g2);
isWin(g2);
repaint();
}
public void isWin(Graphics2D g2) {
boolean isWin = true;
for (int i = 1; i <= 4; i++) {
if (arriver[i] == 0)
isWin = false;
}
if (isWin) {
g2.drawString("恭喜你,游戏结束!", 100, 100);
}
}
public void MiddlePaint(Graphics g2) {
g2.setColor(Color.RED);
g2.drawRect(120, 120, 30, 30);
g2.drawRect(120, 150, 30, 30);
g2.drawRect(150, 120, 30, 30);
g2.drawRect(150, 150, 30, 30);
}
public void ColorMovingPaint(Graphics2D g2) {
for (int i = 1; i <= 4; i++) {
if (flag != i) {
g2.setColor(Color.BLUE);
g2.fill(rect[i]);
} else {
g2.setColor(Color.RED);
g2.fill(rect[i]);
}
}
}
}
class GameKeyListener implements KeyListener {
public void keyPressed(KeyEvent event) {
int keyCode = event.getKeyCode();
if (keyCode == KeyEvent.VK_1) {
flag = 1;
}
if (keyCode == KeyEvent.VK_2) {
flag = 2;
}
if (keyCode == KeyEvent.VK_3) {
flag = 3;
}
if (keyCode == KeyEvent.VK_4) {
flag = 4;
}
if (keyCode == KeyEvent.VK_UP) {
move(0, -30, flag);
}
if (keyCode == KeyEvent.VK_DOWN) {
move(0, 30, flag);
}
if (keyCode == KeyEvent.VK_LEFT) {
move(-30, 0, flag);
}
if (keyCode == KeyEvent.VK_RIGHT) {
move(30, 0, flag);
}
}
public void keyReleased(KeyEvent arg0) {
}
public void keyTyped(KeyEvent arg0) {
}
}
void move(int x, int y, int flag) {
double xTemp = xPos[flag] + x;
double yTemp = yPos[flag] + y;
boolean canMove = true;
for (int i = 1; i <= 4; i++) {
if (i == flag)
continue;
if (xTemp == xPos[i] && yTemp == yPos[i]||xTemp>270||xTemp<0||yTemp<0||yTemp>270) {
canMove = false;
break;
}
}
if (canMove) {
xPos[flag] += x;
yPos[flag] += y;
}
if (xPos[flag] >= 120 && xPos[flag] <= 150 && yPos[flag] <= 150
&& yPos[flag] >= 120)
arriver[flag] = 1;
else
arriver[flag] = 0;
}
}
java 方块_哈工大java实验 移动小方块相关推荐
- 2022-08-02:小红拿到了一个大立方体,该大立方体由1*1*1的小方块拼成,初始每个小方块都是白色。 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,
2022-08-02:小红拿到了一个大立方体,该大立方体由111的小方块拼成,初始每个小方块都是白色. 小红可以每次选择一个小方块染成红色, 每次小红可能选择同一个小方块重复染色, 每次染色以后,你需 ...
- 21点 小游戏 java代码_基于Java的21点扑克游戏的实现
在上次写的比较牌点的扑克游戏上Java扑克游戏(多人多牌数比较游戏)的实现中,添加21点游戏规则,实现21点牌类游戏.具体实现步骤如下:[需要源代码的留QQ,大家一起探讨探讨哈,谢谢啦!] 抽象出规则 ...
- java 一二三四五_五道java小题,补更四道java小题
一:分析以下需求,并用代码实现 1.定义List集合,存入多个字符串 2.删除集合中字符串"def" 3.然后利用迭代器遍历集合元素并输出 import java.util.Arr ...
- 推方块java代码_我的世界无限推方块 | 手游网游页游攻略大全
发布时间:2015-10-19 中刷方块可能是有些玩家的需要,接下来小编就为玩家们介绍一个无限刷方块视频教程,希望能够为喜欢这款游戏的玩家们带来一种全新的技巧! 我的世界无限刷方块视频教程 首先准备这 ...
- 21点小游戏java编程_用Java编写一个二十一点小游戏
21点又名黑杰克(Blackjack),起源于法国,已流传到世界各地,有着悠久的历史.现在在世界各地的赌场中都可以看到二十一点,随着互联网的发展,二十一点开始走向网络时代.该游戏由2到6个人玩,使用除 ...
- java实例_图例 | Java混合模式分析之火焰图实例
这是小小的第五篇 前言 在进行性能调优的时候,通常会借助性能分析工具,常用的性能分析工具有perf,DTrace,分析系统资源的使用情况,这些情况根据CPU,内存,生成相关的文本数据,这些文本数据不容 ...
- 尚学堂java培训_送给 Java 自学者或者初学者的最全知识清单,2020 年 Java 就该这么学...
最近逛知乎,发现有很多想自学 Java 或者 Java 初学者提问,不知道如何学习 Java?我接触 Java 快 8 年的时间了,一直从事 Java 开发工作,自己一直升级打怪,对于如何更好的学习 ...
- java书籍_学习Java最好的10本书,从入门到精通
在当代,学习Java等编程课程的主要方式是视频资源,如果你想学,在网上五分钟之内就可以找到一堆学习视频,瞬间将你的硬盘填满.但是这些课程质量良莠不齐,对于小白来说很难辨别好坏. 但是书籍不同,书籍都是 ...
- java掌握_掌握Java 11的Constantdynamic
java掌握 为了使JVM对动态语言更具吸引力,该平台的第七版已将invokedynamic引入了其指令集. Java开发人员通常不会注意到此功能,因为该功能已隐藏在Java字节码中. 简而言之,通过 ...
最新文章
- RS485通信如何设计EMC电路?
- 部署Configuration Manager主站点以及辅助站点
- Perforce 使用说明
- 中国计算机学会YOCSEF TDS《专题探索班》,新一代人工智能的基础与前瞻
- 【渝粤教育】电大中专市场营销管理20作业 题库
- centos 安装php扩展gd,linux(centos)下为php添加添加GD扩展
- python的输出函数_Python
- C++PrimerPlus学习——第六章编程练习
- 计算机视觉基本原理介绍—RANSAC
- 开源框架 Apache Struts 2漏洞的 PoC 已公开
- android 长截屏实现,Android实现截屏与截长图功能
- python-回文字符串
- OA系统新流程创建与管理办法
- Typora配置PicGo提示Failed to fetch问题解决
- 一篇文章带你入门python基础开发
- 华为芯片设计面试题_华为公司面试硬件工程师笔试题
- 查询数据库表修改记录的sql语句
- ibm p740做虚拟服务器,POWER740 主机板的拆除与安装图文说明
- oracle 判断重复次数,sql 查询 某字段 重复次数 最多的记录
- leetcode:32. 最长有效括号
热门文章
- 归并排序执行次数_肯定能懂的常见算法讲解(1)——排序算法
- oppoa9处理器怎么样_oppoA9究竟怎么样?看看与三星A60元气版的对比吧
- 2020-12-22 一些有用的开源软件
- 《安全测试指南》——配置管理测试【学习笔记】
- NTFS权限笔记 2017-12-4
- 百度地图API开发指南
- [转]Linux环境下段错误的产生原因及调试方法小结
- 这篇文章让我步入了无线时代,感激原创。
- Design Pattern – Separated Interface Pattern[转]
- 有时候,爱就是那么简单