Java写的小游戏,怎么添加倒计时功能?
用JAVA写的小游戏,打算在按游戏开始的同时,启动倒计时?然后计时一定时间,例如5分钟,然后时间一到,游戏结束。应该怎么做?最好还有一个暂停功能,能够暂时停止倒计时!会的...
用JAVA写的小游戏,打算在按游戏开始的同时,启动倒计时?然后计时一定时间,例如5分钟,然后时间一到,游戏结束。应该怎么做?最好还有一个暂停功能,能够暂时停止倒计时!会的高手帮帮忙!谢谢(游戏是用Frame做的,希望在窗口能看到倒计时)
展开
9个回答
展开全部
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Clock extends JFrame implements Runnable,ActionListener {
int time = 180;
boolean start = false;
JLabel timeLabel = new JLabel(""+time+" sec");
JButton startButton,pauseButton;
Clock(){
this.setTitle("Clock");
this.setBounds(0, 0, 150, 150);
this.add(BorderLayout.CENTER,timeLabel);
JPanel buttonPanel = new JPanel();
startButton = new JButton("start");
startButton.addActionListener(this);
buttonPanel.add(startButton);
pauseButton = new JButton("pause");
pauseButton.addActionListener(this);
buttonPanel.add(pauseButton);
this.add(BorderLayout.SOUTH,buttonPanel);
this.setVisible(true);
}
public void startTime(){
if(start){
return;
}else{
start = true;
new Thread(this).start();
}
}
public void pauseTime(){
start = false;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(start){
time--;
timeLabel.setText(""+time+" sec");
timeLabel.updateUI();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Clock();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("start")){
this.startTime();
}else if(e.getActionCommand().equals("pause")){
this.pauseTime();
}
}
}
这是用线程的方法。但只只精确到秒。其实用java自带的
System.currentTimeMillis();
System.nanoTime();
这两个自带的方法取个开头值结束值相减就可以计算时间了
这两个方法一般用来计算程序运行时间的
但是线程用的也很多。。要学会多用线程。。。
线程非常重要。。
因为写的匆忙。。。没定义到0就停止不过这个容易改。。这个可以到-时间。。。还有
没锁。。你自己想去把。。我要写论文了
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
public class Clock extends JFrame implements Runnable,ActionListener {
int time = 180;
boolean start = false;
JLabel timeLabel = new JLabel(""+time+" sec");
JButton startButton,pauseButton;
Clock(){
this.setTitle("Clock");
this.setBounds(0, 0, 150, 150);
this.add(BorderLayout.CENTER,timeLabel);
JPanel buttonPanel = new JPanel();
startButton = new JButton("start");
startButton.addActionListener(this);
buttonPanel.add(startButton);
pauseButton = new JButton("pause");
pauseButton.addActionListener(this);
buttonPanel.add(pauseButton);
this.add(BorderLayout.SOUTH,buttonPanel);
this.setVisible(true);
}
public void startTime(){
if(start){
return;
}else{
start = true;
new Thread(this).start();
}
}
public void pauseTime(){
start = false;
}
@Override
public void run() {
// TODO Auto-generated method stub
while(start){
time--;
timeLabel.setText(""+time+" sec");
timeLabel.updateUI();
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
new Clock();
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO Auto-generated method stub
if(e.getActionCommand().equals("start")){
this.startTime();
}else if(e.getActionCommand().equals("pause")){
this.pauseTime();
}
}
}
这是用线程的方法。但只只精确到秒。其实用java自带的
System.currentTimeMillis();
System.nanoTime();
这两个自带的方法取个开头值结束值相减就可以计算时间了
这两个方法一般用来计算程序运行时间的
但是线程用的也很多。。要学会多用线程。。。
线程非常重要。。
因为写的匆忙。。。没定义到0就停止不过这个容易改。。这个可以到-时间。。。还有
没锁。。你自己想去把。。我要写论文了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码太长,留下email给你发。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
倒计时?? LZ 你多线程会了没?
多线程会了 不存在连个倒计时都搞不来的。。。
多线程会了 不存在连个倒计时都搞不来的。。。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询