精华内容
下载资源
问答
  • public frame(){ //基本界面 super("别踩白块"); this.setBounds(600, 300, 400, 700); this.setVisible(true); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent ...

    首先理一下思路:

    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;

    }

    }

    展开全文
  • javaAndroid别踩白块

    2017-11-13 16:16:50
    java写的Android别踩白块小游戏,实训一个月的成果,欢迎大家下载参考
  • package com.orange.block.control;import com.orange.engine.handler.timer.ITimerCallback;import com.orange.engine.handler.timer.TimerHandler;import com.orange.block.scene.GameScene;import ...

    package com.orange.block.control;

    import com.orange.engine.handler.timer.ITimerCallback;

    import com.orange.engine.handler.timer.TimerHandler;

    import com.orange.block.scene.GameScene;

    import com.orange.block.util.LogUtil;

    public class TimerTool {

    private GameScene mGameScene;

    private TimerHandler mTimerHandler;

    /**当前经过的总毫秒数**/

    private long millisPass = 0;

    /**是否计时�?*/

    private boolean isCountDowning = false;

    /**多少毫秒累加一次计�?*/

    private static long stepMillis = 83;

    public TimerTool(GameScene pGameScene) {

    this.mGameScene = pGameScene;

    initTimerHandler();

    }

    // 初始化TimerHandler,设置为每隔stepMillis * 0.001f秒循环回调onTimePassed方法

    private void initTimerHandler() {

    mTimerHandler = new TimerHandler(stepMillis * 0.001f, true,

    new ITimerCallback() {

    @Override

    public void onTimePassed(TimerHandler pTimerHandler) {

    // 累加所经过的时间,并在界面上更新显示当前时�?

    addMillisPass();

    }

    });

    }

    // 重置时间

    public void resetTimer() {

    millisPass = 0;

    isCountDowning = false;

    }

    // 累加所经过的时间,并在界面上更新显示当前时�?

    private void addMillisPass() {

    millisPass += stepMillis;

    mGameScene.getTimerText().setText(millisToTimer(millisPass));

    }

    // 获取当前经过的总毫秒数

    public long getMillisPass() {

    return millisPass;

    }

    // 把毫秒转化为一种分、秒、毫秒的文本显示模式字符�?

    public String millisToTimer(long pMillisPass) {

    String timer = "";

    long min = pMillisPass / 60000;

    long sec = (pMillisPass - min * 60000) / 1000;

    String secStr = sec < 10 ? "0" + sec : String.valueOf(sec);

    long millisec = pMillisPass % 1000;

    String millisecStr = millisec < 100 ? "0" + millisec : String

    .valueOf(millisec);

    //LogUtil.d("pMillisPass--->"+pMillisPass+" millisecStr--->"+millisecStr);

    if (min > 0) {

    timer += min + ":";

    }

    timer += secStr + "." + millisecStr + "\"";

    return timer;

    }

    // 注册mTimerHandler开始计�?

    public void start() {

    if (!isCountDowning) {

    isCountDowning = true;

    mGameScene.registerUpdateHandler(mTimerHandler);

    }

    }

    // 反注册mTimerHandler停止计时

    public void stop() {

    mGameScene.unregisterUpdateHandler(mTimerHandler);

    }

    }

    

    更多源码 | 好库简介 | 网站地图 | 帮助中心 | 版权说明

    Copyright© 2009-2012 OKBASE.NET All Rights Reserved 好库网 版权所有

    展开全文
  • 【实例简介】经典游戏别踩白块源码,自己DIY 嘚瑟一下自己的小伙伴吧 !【实例截图】【核心代码】OGEngine_bcbkym└── OGEngineDeom_block├── AndroidManifest.xml├── Default.og├── assets│ └── gfx...

    【实例简介】

    经典游戏别踩白块源码,自己DIY 嘚瑟一下自己的小伙伴吧 !

    【实例截图】

    【核心代码】

    OGEngine_bcbkym

    └── OGEngineDeom_block

    ├── AndroidManifest.xml

    ├── Default.og

    ├── assets

    │   └── gfx

    │   ├── game.java

    │   ├── game.pvr.ccz

    │   └── game.xml

    ├── bin

    │   ├── AndroidManifest.xml

    │   ├── OGEngineDeom_01.apk

    │   ├── OGEngineDeom_block.apk

    │   ├── R.txt

    │   ├── classes

    │   │   └── com

    │   │   └── orange

    │   │   └── block

    │   │   ├── BuildConfig.class

    │   │   ├── MainActivity.class

    │   │   ├── R$attr.class

    │   │   ├── R$drawable.class

    │   │   ├── R$string.class

    │   │   ├── R.class

    │   │   ├── control

    │   │   │   ├── TimerTool$1.class

    │   │   │   └── TimerTool.class

    │   │   ├── entity

    │   │   │   ├── Block.class

    │   │   │   ├── FailGroup$1.class

    │   │   │   ├── FailGroup$2$1.class

    │   │   │   ├── FailGroup$2.class

    │   │   │   ├── FailGroup.class

    │   │   │   ├── SuccGroup$1.class

    │   │   │   ├── SuccGroup$2$1.class

    │   │   │   ├── SuccGroup$2.class

    │   │   │   └── SuccGroup.class

    │   │   ├── res

    │   │   │   └── Res.class

    │   │   ├── scene

    │   │   │   ├── GameScene$1.class

    │   │   │   └── GameScene.class

    │   │   └── util

    │   │   ├── ConstantUtil.class

    │   │   ├── LogUtil.class

    │   │   └── SharedUtil.class

    │   ├── classes.dex

    │   ├── dexedLibs

    │   │   ├── android-support-v4-7e010683d57852f32e863cc2571d407d.jar

    │   │   ├── android-support-v4-d1616bd6e67c71d4ef9206756a6b934a.jar

    │   │   ├── annotations-534c96627282f3e7de5d49e097ca5d72.jar

    │   │   ├── orangeengine_gles2_v1.4-58bea45ff52c46311721c27391ff7a20.jar

    │   │   ├── orangeengine_gles2_v1.4-5a56fe27e680ebf638a431af02379bcb.jar

    │   │   └── orangeengine_gles2_v1.4-9b2fa755181ebbff46694547ac75221a.jar

    │   ├── jarlist.cache

    │   ├── res

    │   │   ├── drawable-hdpi

    │   │   │   └── ic_launcher.png

    │   │   ├── drawable-ldpi

    │   │   │   └── ic_launcher.png

    │   │   ├── drawable-mdpi

    │   │   │   └── ic_launcher.png

    │   │   └── drawable-xhdpi

    │   │   └── ic_launcher.png

    │   └── resources.ap_

    ├── doc

    │   └── 使用OGEngine开发别踩白块儿.doc

    ├── gen

    │   └── com

    │   └── orange

    │   └── block

    │   ├── BuildConfig.java

    │   └── R.java

    ├── libs

    │   ├── android-support-v4.jar

    │   └── orangeengine_gles2_v1.4.jar

    ├── proguard-project.txt

    ├── project.properties

    ├── res

    │   ├── drawable-hdpi

    │   │   └── ic_launcher.png

    │   ├── drawable-ldpi

    │   │   └── ic_launcher.png

    │   ├── drawable-mdpi

    │   │   └── ic_launcher.png

    │   ├── drawable-xhdpi

    │   │   └── ic_launcher.png

    │   └── values

    │   └── strings.xml

    └── src

    └── com

    └── orange

    └── block

    ├── MainActivity.java

    ├── control

    │   └── TimerTool.java

    ├── entity

    │   ├── Block.java

    │   ├── FailGroup.java

    │   └── SuccGroup.java

    ├── res

    │   └── Res.java

    ├── scene

    │   └── GameScene.java

    └── util

    ├── ConstantUtil.java

    ├── LogUtil.java

    └── SharedUtil.java

    40 directories, 67 files

    展开全文
  • Java“别踩方块”脚本

    Java“别踩白方块”脚本代码

    1 基本函数

    使用awt包的Robot类,来完成获取像素点颜色,模拟按键,模拟鼠标等等。

    import java.awt.*;
    public class text {
    	public static void main(String[] args) throws AWTException {
    				Robot robot=new Robot();
    	}
    

    .
    .

    1.1获取(a,b)点像素的颜色
    Color pixelColor=robot.getPixelColor(a,b);
    //输出三原色
    System.out.println(pixelColor.getRed());
    System.out.println(pixelColor.getBlue());
    System.out.println(pixelColor.getGreen());
    

    如果(a,b)点是白色,则输出
    225
    225
    225
    .
    .

    1.2 模拟鼠标
    robot.mouseMove(a,b);
    

    鼠标移动到(a,b)点
    .
    .

    1.3 模拟键盘按键

    70是D键对应的ascii码

    robot.keyPress(70);	             //按下D键
    robot.keyRelease(70);			 //松开D键
    

    .
    .

    2 脚本

    package tread;
    import java.awt.*;
    //游戏网站
    //http://www.4399.com/flash/135255_3.htm
    //屏幕分辨率 1920*1080 ,缩放100%(在设置里面可以看,笔记本默认应该是125%),谷歌浏览器(缩放100%),浏览器位于左1/2屏幕
    //不同的屏幕获取像素点位置不同,程序可能无法运行
    
    public class tread {
    	public static void main(String[] args) throws AWTException, InterruptedException {
    		//程序运行前延时1000ms
    		Thread.sleep(1000);
    		int a=1;
    		//无限while循环
    		while(a<=100){
    		//每次按键间隔100ms
    			Thread.sleep(100);
    			for(int i=1;i<=4;i++) {
    				Robot robot=new Robot();
    				//获取屏幕某一像素的颜色
    				Color pixelColor=robot.getPixelColor(100*i+100, 550);
    				//这里黑方块的三原色是(51,51,51)
    				if(pixelColor.getRed()==51) {
    					switch(i) {
    					//模拟按键:例如D键的ascii码是68
    					case 1:
    						robot.keyPress(68);
    						robot.keyRelease(68);
    						break;
    					case 2:
    						robot.keyPress(70);
    						robot.keyRelease(70);
    						break;
    					case 3:
    						robot.keyPress(74);
    						robot.keyRelease(74);
    						break;
    					case 4:
    						robot.keyPress(75);
    						robot.keyRelease(75);
    						break;
    					}
    				}
    			}
    		}
    	}
    }
    
    
    展开全文
  • [Java教程]第一帖,发个网页版的别踩白块02015-07-06 01:00:03index.html1 2 3 4 别踩白块 5 6 7 8 9 10 --By:无痕 2015/07/0511 本人QQ:2632790902 欢迎反馈12 13 init.js1 var canvas; //画布div ...
  • 前端学习要告一段落了,也没机会写什么像样的东西,然后无意中想起某人以前给我玩了一下别踩白块的游戏,手残还被嘲讽了下,现在想起来觉得这游戏实现起来也不难,于是上星期用jquery写了一个别踩白块的小游戏,就像...
  • 展开全部适合用JButton来实现32313133353236313431303231363533e59b9ee7ad9431333337376334,实例如下:importjava.awt.Color;importjava.awt.GridLayout;importjavax.swing.JButton;importjavax.swing.JFrame;...
  • java别踩白块小游戏

    千次阅读 2018-09-27 08:55:49
    别踩白块小游戏: &lt;%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%&gt; &lt;!DOCTYPE html&gt; &lt;html&gt...
  • import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Image;import java.awt.Toolkit;import java.awt.event.MouseEvent;import java.awt.event.MouseListener;impor...
  • 首先,要知道一个项目的基本结构和原理,别猜白块是一个简单的小游戏,它的结构和原理也很简单,先要有一个主体盒子给它加一个class叫wrapper,所有的元素都应该包含在这个盒子里,游戏的主体思想是有两个盒子,一...
  • 23 importjava.awt.Color;4 importjava.awt.Font;5 importjava.awt.Graphics;6 importjava.awt.Toolkit;7 importjava.awt.event.MouseEvent;8 importjava.awt.event.MouseListener;9 importj...
  • 游戏唯一的一个规则,我们只需要不断踩着黑色方块前进即可,这里根据方向键来踩白块在规定时间内,每走一次分数加100游戏内的每一排都是一个有四个元素的数组,当正确的踩到黑块前进后,前一个数组内所有的对象样式...
  • 本文实例讲述了jQuery实现的别踩白块小游戏。分享给大家供大家参考,具体如下:首先引入jquery.js1.csshtml,body,.contain {width: 100%;height: 96%;overflow: hidden;background-color: #FFFFCC;}.text-center {...
  • java别踩白块(基础功能)

    千次阅读 2018-06-26 11:56:44
    super("别踩白块"); this.setBounds(600, 300, 400, 700); this.setVisible(true); this.addWindowListener(new WindowAdapter() { @Override public void windowClosing(WindowEvent e) { System.exit(-1); } }); ...
  • 那么别踩白块小游戏,相信大家并不陌生,这个小游戏我们可以通过原生js来实现,即便是前端初学者也可以轻松完成。(视频版请点击本文末尾左下角:下面我们就给大家分享一个原生js实现别踩白块小游戏的方法。...
  • “别踩白块儿”是目前非常火的一款游戏,游戏非常简单刺激。关于具体怎么火法怎么玩我就不多说了,相信看到本文的朋友们都非常地清楚。什么游戏火,我们都想知道自己能不能也弄一个玩玩,我也花了点时间弄了一个,...
  • 游戏结束", "别点白块!游戏结束"]; wx.showToast({ title: titleArr[type], icon: 'cancel', duration: 2000, complete: function(){ // 将此分数存入全局变量 app.globalData.currentScore = score; // 若此分数比...
  • Java做的一个小游戏,黑白反斗棋,我玩过了5*5和10*10的。是学习之后做的,不是自己原始开发的。import java.awt.Color;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Toolkit;import ...
  • Java做个类似别踩白块小游戏,求一下代码参考,学习Java开发,想从这个小应用开始学起,谢谢啦
  • 其他图像调整大小没问题,任何人都知道gif /和/或Java Bug有什么问题 最佳答案 以下是通过ImageIO加载时链接图像的ColorModel的字符串表示形式: IndexColorModel: #pixelBits = 1 numComponents = 4 color space = ...
  • java小白——java语言基本规则 ...使用{}来包裹代码。“;”和“{}”都属于分隔符。 4、标识符由字母、数字、下划线、美元符号组成,且第一个字符不能是数字。 (标志符命名一般不建议使用美元符号和下划...
  • 这是我的尝试: NotificationService.java: NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context) .setContentTitle(getString(R.string.app_name)) .setContentText...
  • 游戏结束", "别点白块!游戏结束", "时间到"]; var _this = this; wx.showToast({ title: titleArr[type], icon: 'cancel', duration: 2000, complete: function(){ // 将此分数存入全局变量 app.globalData....
  • 初始化静态成员变量,执行静态代码(静态成员变量和静态代码的执行顺序依据在代码中出现的顺序执行,若存在继承关系,则先执行父类再执行子类)——再执行非静态变量和方法(先父类后子类,构造代码和构造方法...
  • Java 小白 向上转型

    2020-09-29 17:23:35
    System.out.println("自动挡汽车有2踏板。"); } } class throttle extends Car { void th() { System.out.println("右脚踩油门踏板"); } } class brake extends Car { void th() { System.out.println(...
  • Lock发生异常时,如果程序没有通过unLock()去释放锁,则很可能造成死锁现象,因此Lock一般都是在finally中释放锁;2、Lock锁仅适用于代码范围,而synchronized可以锁住代码、对象实例、类;String s =new ...
  • Java小白手记:WEB项目等

    千次阅读 2015-06-03 23:39:06
    在此之前,我了解到JAVA分为三大:j2se、j2ee、j2me。粗略地讲,j2se做win form,j2ee做WEB,j2me for 手机开发。不过,j2ee的范围要比web广阔。去年我只自学了一段时间,都是些基本语法之类,再加上几个月的andr
  • java小白Day03

    2018-03-07 17:48:07
    一、程序的结构 1.分支结构 if语句:使用布尔值或者布尔...代码 c.语法 if(逻辑表达式){ code... }else{ code... }   if(逻辑表达式){ code... }else if(逻辑表达式){ code... }else{ } swi...
  • java小白Day04

    2018-03-08 21:48:17
    今天的理论知识比较少 ,但是我觉得都有些难,对于数组那,做不出来呀。今晚的练习也有一题做不出来。要继续努力!----------------一、eclipse快捷键main方法/for:Alt+?+回车System.out.println : syso-&gt...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 570
精华内容 228
关键字:

java白块

java 订阅