![](/img/trans.png)
[英]How to correctly implement a Timer in a Simon says Game in Java
[英]How to implement a timer correctly?
确定,我有这种方法来减少我的类计时器中的属性int sec(seconds)
private void decreaseSec(){
if(sec <59 && sec > 0 ){
sec--;}
else if(sec == 0 && min == 0){
sec = 0;
}
else if(sec == 0 && min > 0){
sec = 59;
decreaseMin();
}
}
根据我的逻辑,正确地减少秒数是正确的。 但是当它达到0时,开始计数到负数(-1,-2,-3 ...),我不明白! 也许有人可以帮助我,或者提供一种更好的方法。 谢谢!
尝试这个。 您可能会跳过零进入负面领域,而永远不会抓住它。
private void decreaseSec(){
if(sec > 0){
sec--;
}else if(sec <= 0 && min <= 0){
sec = 0;
}else if(sec <= 0 && min > 0){
sec = 59;
decreaseMin();
}
}
package Reloj;
import java.util.Scanner;
/**
*
* @author MarcoAntonio
*/
public class Temporizador {
//Metodo estatico de mi aplicacion de AppLibreria
public static void limpiaPantalla(){
//Limpiando la pantalla
for(int i = 0; i<25 ; i++){
System.out.println();
} }
private int hr;
private int min;
private int seg;
public Temporizador (){
hr = min = seg = 0;
}
public Temporizador(int h, int m, int s){
this();
hr = h;
min = m;
seg = s;
}
public void setHr(int hr) {
this.hr = hr;
}
public void setMin(int min) {
this.min = min;
}
public void setSeg(int seg) {
this.seg = seg;
}
public int getHr() {
return hr;
}
public int getMin() {
return min;
}
public int getSeg() {
return seg;
}
public void decrementa(){
if(hr == 0){
if(min == 0 && seg != 0){
seg--;
}
if(min != 0 && seg == 0){
min--;
seg = 59;
}
if(min != 0 && seg != 0){
seg--;
}
}
if(hr != 0){
if(min == 0 && seg == 0){
hr--;
min = 59;
seg = 59;
}
if(min == 0 && seg != 0){
seg--;
}
if(min != 0 && seg == 0){
min--;
seg = 59;
}
if(min != 0 && seg != 0){
seg--;
}
}
}
@ Override
public String toString(){
String tiempo = "";
String ap;
if(hr < 10){
tiempo += "0" + hr + ":";
}
else{
tiempo += hr + ":";
}
if(min < 10){
tiempo +="0" + min + ":";
}
else{
tiempo += min + ":";
}
if(seg < 10){
tiempo +="0" + seg + " ";
}
else{
tiempo += seg + " ";
}
return tiempo;
}
public static void main(String args[]){
boolean m = true;
Temporizador t = new Temporizador();
Scanner s = new Scanner(System.in);
System.out.println("Buenas tardes...");
System.out.println("Bienvenido al temporizador, a continuacion selecione las horas, minutos y segundo");
System.out.println("para empezar la cuenta regresiva. P:");
do{
System.out.println("¿Cuantas horas?");
int horas = Integer.parseInt(s.nextLine());
t.setHr(horas);
System.out.println("¿Cuantos minutos?");
int minutos = Integer.parseInt(s.nextLine());
t.setMin(minutos);
System.out.println("¿Cuantos segundos?");
int segundos = Integer.parseInt(s.nextLine());
t.setSeg(segundos);
if( t.getHr() == 0 && t.getMin()== 0 && t.getSeg()==0 ){
System.out.println("No inicializado su temporizador");
limpiaPantalla();}
}while(t.getHr() == 0 && t.getMin()== 0 && t.getSeg()==0);
do{
System.out.println(t.toString());
t.decrementa();
try{
Thread.sleep(1);// un thread es una ejecucion en el procesador
}catch(Exception e){}
if(t.getHr() == 0 && t.getMin()== 0 && t.getSeg()==0){
m = false;
}
}while( m != false);
System.out.println("Listones! Tiempo finalizado");
}
}
我有分享我的代码的感觉。 Esta enespañolpor que soy de Mexico jaja。 制作不同情况的真值表真的很容易解决,我们有3个二进制变量是8个组合。
hr mn sg
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
一个代表变量中的数字值,例如:
101可能是----> 6hr:0':59''
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.