首先理一下思路:

1.创建界面                      创建一个背景类,主函数入口。
2.创建方块,从顶端出现。               创建一个节点类。
3.使方块下降,每秒一次。                 改变坐标位置。每秒重画一次。
4.在下降的同时,出现新的方块。                  将节点相连,并每次重画的时候创建一个新的节点。
5.实现触碰效果,碰到最下面的方块以后,消去。      设置鼠标监听事件和鼠标点击点的坐标,当点击在范围内将消去最下面的方块。

6.漏点或者有方块降下去,游戏结束。                      设置边界,头部超出,或点击的不是头部区域则失败。

写的有点烂,大神勿喷,只实现了基本功能。

再运行时,反应有点慢,只能等线程阻塞完成后他才会消去方块,线程问题没有解决,到最后只会越来越多

有什么好的见解可以告诉我一声。

界面背景类:

public class frame extends Frame{
private int vk=100;
private int x=-200,y=-200;
private boolean flag=true;queue qq=new queue();
public frame(){  //基本界面
super("别踩白块");
this.setBounds(600, 300, 400, 700);
this.setVisible(true);
this.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(-1);
}
});
new MyThread().start();   //创建一个线程,用于更新画布
addMouseListener(new Mouse());  //设立鼠标监听事件
}
public void paint(Graphics g){
g.setColor(Color.BLACK);
for(int i=0;i<=4;i++){
g.drawLine(0+i*vk, 0, 0+i*vk, 700);
}
for(int i=0;i<=7;i++){
g.drawLine(0, 100+i*vk, 400, 100+i*vk);
}
qq.draw(g);    qq.add();      }
public void carsh(){
int cx=x-x%100;          //取整百数操作
int cy=y-y%100;
if ((cx==qq.getX())&&(cy==qq.getY())) {   //判断点击是否在方块内,如果在则消去方块
qq.delete();
}
else {
flag=false;
}
}
public void gameover(){  //游戏结束函数
Label label=new Label("游戏结束");label.setBounds(100, 200, 300, 100);label.setFont(new Font("宋体", 1, 50));this.add(label);this.setLayout(null);this.setVisible(true);
}class Mouse extends MouseAdapter{
@Override
public void mouseClicked(MouseEvent e) {
if (e.getButton()==MouseEvent.BUTTON1) {  //获得鼠标点击点的坐标
x=e.getX();
y=e.getY();
carsh();
}}}
public static void main(String[] args) {frame bg=new frame();
}
class MyThread extends Thread{
@Override
public void run() {
while(true){
try {
if(flag==true){
repaint();  //重画
qq.headxy();  //获得最下面的方块坐标
}
else {
break;
}Thread.sleep(1000);
} catch (Exception e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}
}
gameover();
}}}

队列类:用于将每个方块连起来,用于判断哪个是头,哪个是尾。

public class queue {
private node tail;
private node head;
private node block;
private int x,y;
public queue(){
block=new node();
head=block;
tail=block;
}
//将每个方块都画出来
public void draw(Graphics g){
for(node n=head;n!=null;n=n.next){
n.draw(g);
}
}
// 新增node节点,新增的node的后驱节点为原来的头部,令原来的头部的前驱节点等于新节点,使方块连起来,最后令新节点变为头部。
public void add(){
node block=new node();
block.next=head;
head.prex=block;
head=block;
}
//删除尾部方块,尾部删除则是另尾部变为尾部的前驱节点,接着使新的尾部的后驱节点置空。
public void delete(){
tail=tail.prex;
tail.next=null;}
//这个是尾部删除,之前写错了,方法名没有更改
public void headxy(){
x=tail.getX();
y=tail.getY();
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}}

方块类:

public class node {
node prex;
node next;
private int vk=100;
private int x,y;
public node(){
x=(new Random().nextInt(4))*vk;
y=-100;
}
public void draw(Graphics g){  //画方块,每次向下移一格
g.setColor(Color.blue);
g.fillRect(x, y, 100, 100);
y=y+vk;
}
public int getX() {
return x;
}
public void setX(int x) {
this.x = x;
}
public int getY() {
return y;
}
public void setY(int y) {
this.y = y;
}}

java别踩白块(基础功能)相关推荐

  1. java别踩白块_java别踩白块(基础功能)

    首先理一下思路: 1.创建界面                      创建一个背景类,主函数入口. 2.创建方块,从顶端出现.               创建一个节点类. 3.使方块下降,每秒一 ...

  2. Java别踩白块外挂(附源码)

    目录 说明: Robot类的介绍 Robot类API 主要思路 代码实现 工具方法 脚本源代码 实现结果 说明: 本篇文章主要运用java中的Robot类,实现Microsoft Store微软商店中 ...

  3. java别踩白块_jquery之别踩白块游戏的简单实现

    前端学习要告一段落了,也没机会写什么像样的东西,然后无意中想起某人以前给我玩了一下别踩白块的游戏,手残还被嘲讽了下,现在想起来觉得这游戏实现起来也不难,于是上星期用jquery写了一个别踩白块的小游戏 ...

  4. 【Java】用Java挑战别踩白块无尽模式

    好记性不如烂笔头,娱乐一下吧! 文章目录 一.前言 二.Robot是什么? 三.方法介绍 四.案例 五.总结 一.前言 相信大家都玩过"别再踩白块了",但是有些极限手速也就只能在某 ...

  5. 别踩白块java程序代码_别踩白块源码

    [实例简介] 经典游戏别踩白块源码,自己DIY 嘚瑟一下自己的小伙伴吧 ! [实例截图] [核心代码] OGEngine_bcbkym └── OGEngineDeom_block ├── Andro ...

  6. JS 实现别踩白块功能

    使用JS实现别踩白块功能.自己尚未完成.后序会继续完成的.该项目地址http://study.163.com/course/courseMain.htm?courseId=652005 <!DO ...

  7. C语言项目实战:《别踩白块游戏》零基础项目,137 行源代码示例

    这篇文章主要为大家详细介绍了C语言实现--<别踩白块游戏>,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下! 游戏介绍: <别踩白块儿 Don't Ta ...

  8. JAVA中Robot类的运用,实现‘别踩白块’游戏辅助

    Robot 一.功能分析 http://www.4399.com/flash/135255_3.htm 别踩白块游戏,运用Java Robot类完成游戏脚本,自动完成踩黑块. 二.设计思路 首先创建一 ...

  9. 别踩白块_前端H5游戏毕设

    摘 要 本文详细介绍了网页版躲避白色钢琴块音乐游戏的设计和实现.由于游戏软件安装占据较大的空间与安装时间,而且步骤繁琐,用常规的游戏安装方法不能取得便捷的游戏安装体验.网页游戏是一种基于在网络游戏中被 ...

最新文章

  1. 开始使用asp.net ajax的控件工具包AJAX Control Toolkit
  2. C/S和B/S的异同
  3. 基于php构建APi流程,php – 如何构建一个RESTful API?
  4. 在node.js中建立你的第一个HTTp服务器
  5. 向量外积_解析几何 -向量
  6. C语言入门水题总结2
  7. tomcat日志中出现乱码
  8. wps office2019PC版和Mac版_来试试这款政府版WPS吧
  9. Qt 图片自适应QLabel大小
  10. java限制ip登陆次数_手把手教你自定义IP访问次数限制器
  11. 完美解决Pyqt5 调用软键盘适用于触摸屏
  12. This is probably not a problem with npm. There is likely additional logging output above.
  13. JQuery 判断浏览器及其版本
  14. 宏(macro)定义的简介
  15. 显色指数(CRI)计算软件分享
  16. MySQL主从复制原理学习
  17. 2021年最新阿里面经分享,复盘我的阿里巴巴三轮技术面,希望对大家有帮助!
  18. 利用windows上的VMware安装CentOS7(上)
  19. TRC丨艾美捷TRC ACP-5197说明书
  20. 六、软件用户操作手册-模板

热门文章

  1. 括号匹配openjudge c语言,OpenJudge计算概论-扩号匹配问题【这个用到了栈的思想】...
  2. RabbitMQ本地部署(Centos 7.4)
  3. 网站打包生成的APP和原生开发APP的区别?
  4. 169、交换机配置规范
  5. nodejs读取xlsx格式文件
  6. linux中怎么添加输入法,linux下添加中文输入法
  7. 国际象棋“皇后”问题的回溯算法
  8. 现代 Web CI/CD 系统的搭建
  9. 有哪些快速翻译英文的软件推荐
  10. 《动手学深度学习》笔记——深度学习简介