Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何显示两侧的球数(球数)_Java_Swing_Timer_Paint_Keylistener - Fatal编程技术网

Java 如何显示两侧的球数(球数)

Java 如何显示两侧的球数(球数),java,swing,timer,paint,keylistener,Java,Swing,Timer,Paint,Keylistener,我写了一个程序来扮演麦克斯韦的恶魔。它应该有一个有两个边和几个边的窗户 到处跑的圆点从墙上弹下来。中间有一堵墙。当您单击 按钮,墙中会出现一个间隙(直到松开)。这应该允许一个人尝试 在一边得到比另一边更多的球。您可以在每一侧显示计数 这是主类,我有两个其他类,一个是点(我让点移动,然后 告诉我有多快),另一个是蓝点(我在这里创建蓝点) 所以我想要的是显示两边的球数?或者我们有多少人 墙的两边都有球吗 正如JDeveloper建议的那样,将count++添加到我的doMoreDots()方法中以获

我写了一个程序来扮演麦克斯韦的恶魔。它应该有一个有两个边和几个边的窗户

到处跑的圆点从墙上弹下来。中间有一堵墙。当您单击

按钮,墙中会出现一个间隙(直到松开)。这应该允许一个人尝试

在一边得到比另一边更多的球。您可以在每一侧显示计数

这是主类,我有两个其他类,一个是点(我让点移动,然后

告诉我有多快),另一个是蓝点(我在这里创建蓝点)

所以我想要的是显示两边的球数?或者我们有多少人

墙的两边都有球吗

正如JDeveloper建议的那样,将count++添加到我的doMoreDots()方法中以获取总数

点,但它没有给我任何总数,它返回0

主程序

package dotChaser;

//DotChaser.java
//This program does some simple animation where a dot move around
//the blue dots.

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DotChaser extends JFrame implements ActionListener, KeyListener {

    javax.swing.Timer time; // generates ticks that drive the animation
    protected double deltaT = 0.020; // how much time for each tick
    BlueDot[] blues; // holds the blue dots
    int blueCounter = 0; // number of blue dots
    //Label howMany =  new Label();
    JTextField tf;// The text field for the key listener 
    boolean open; // open= true part. pass through, open = false part. dont pass through

    public static void main(String[] args) {
        DotChaser d = new DotChaser();
    }
    // constructor

    public DotChaser() {
        Dot.theDotChaser = this;
        //time managment
        time = new javax.swing.Timer((int) (1000 * deltaT), this);
        time.start();

        blues = new BlueDot[200];


        tf = new JTextField("---------------");
        add(tf);
        tf.addKeyListener(this);

        for (int i = 0; i < 20; i++) {
            blues[blueCounter++] = new BlueDot();

            //count++;                                     
            //howMany.setText(ballReport());

            setLayout(new FlowLayout());
            setTitle("Dot Chaser!");
            setSize(new Dimension(600, 600));
            setVisible(true);
        }
    }

    // the work its doing 
    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == time) {
            doTime();
        }
        repaint();
    }
    // key listener mouse motion 

    public void keyTyped(KeyEvent k) {}

    public void keyPressed(KeyEvent k) {
        System.out.println("you pressed key=" + k.getKeyChar());
        open = true;
    }

    public void keyReleased(KeyEvent k) {
        System.out.println("you released key=" + k.getKeyChar());
        open = false;
    }

    // the clock ticked, so tell all the dots to move a little
    public void doTime() {

        for (int i = 0; i < blueCounter; i++) {
            blues[i].move(deltaT);
        }
    }
    /* Here is what I added from the suggestion */
     // make another blue dot (and add it to the blues array)
     static int count = 0;

    public void doMoreDots() {
        blues[blueCounter++] = new BlueDot();
        count++
        repaint();
    }

    // paint all the dots
    public void paint(Graphics g) {
        super.paint(g);
        for (int i = 0; i < blueCounter; i++) {
            blues[i].drawMe(g);
        }

        {
            // draw the wall
            g.setColor(Color.pink);
            g.fillRect(250, 40, 90, 200);
            g.fillRect(250, 400, 90, 300);

        }
        // close wall when false
        if (open == false) {
            g.fillRect(250, 200, 90, 200);
            g.fillRect(250, 400, 90, 300);
        }

        System.out.println("count" + count);
        g.setColor(Color.black);
        g.drawString(String.format("%d", blueCounter), 510, 640);
    }
}
packagedotchaser;
//java
//这个程序做一些简单的动画,其中一个点在周围移动
//蓝色的圆点。
导入java.awt.*;
导入java.awt.event.*;
导入javax.swing.*;
公共类DotChaser扩展JFrame实现ActionListener、KeyListener{
javax.swing.Timer time;//生成驱动动画的刻度
受保护的双deltaT=0.020;//每个滴答的时间是多少
蓝点[]蓝色;//保留蓝点
int blueCounter=0;//蓝点的数量
//标签数量=新标签();
JTextField;//密钥侦听器的文本字段
布尔打开;//打开=真部分。通过,打开=假部分。不通过
公共静态void main(字符串[]args){
DotChaser d=新的DotChaser();
}
//建造师
公共DotChaser(){
Dot.theDotChaser=这个;
//时间管理
time=newjavax.swing.Timer((int)(1000*deltaT),this);
time.start();
蓝色=新蓝点[200];
tf=新的JTextField(“--------------”);
添加(tf);
tf.addKeyListener(this);
对于(int i=0;i<20;i++){
blues[blueCounter++]=新的蓝点();
//计数++;
//多少个.setText(ballReport());
setLayout(新的FlowLayout());
setTitle(“点追逐者!”);
设置尺寸(新尺寸(600600));
setVisible(真);
}
}
//这项工作正在进行中
已执行的公共无效操作(操作事件e){
如果(例如getSource()==时间){
doTime();
}
重新油漆();
}
//按键侦听器鼠标运动
public void keyTyped(KeyEvent k){}
按下公共无效键(KeyEvent k){
System.out.println(“您按下了key=“+k.getKeyChar());
开放=真实;
}
公共无效密钥已释放(密钥事件k){
System.out.println(“您释放了key=“+k.getKeyChar());
开=假;
}
//时钟滴答滴答地响着,所以让所有的点移动一点
公共void doTime(){
对于(int i=0;i
为什么不能使用blueCounter?它将如何工作?因为我做了blueCounter然后它崩溃了?我的意思是,如果有办法使用它,那就太好了。试着替换
g.drawString(“+count,510640)带有
g.drawString(String.format(“%d”,blueCounter),510640)一直都是数字20?别忘了重新粉刷画框。