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