Wert muss sich pro sek ändern aber wie? HELP!

Status
Nicht offen für weitere Antworten.

draxon

Mitglied
Hi, ich hab ein ziemliches Problem!

ICh bin absoluter Java Noob, und muss ein Projekt für die Schule fertigstellen... nur komm ich einfach nicht weiter, also mein problem ist, dass ich ein aktienspiel programmiere.... ich denk das kann sich jeder vorstellen... nur bekomm ich es nicht hin, dass sich der wert der aktie pro sekunde mit einer zufallszahl zw. 0,85 und 1.20 multipliziert... das ganze muss aber ich einen timer eingebunden werden, mit dem ich das spiel auch pausieren kann und sich der kurs dann nicht weiter ändert....

Mein Code bis hierhin....:
Code:
       //Variablen für Timer
        int sekunden=0;
        boolean gestartet;
        
        //Allgemeine Variablen
        int z, x,akt1,akt2, menge, kurs1, kurs2,n;
        double anteil, kapital, vermoegen;
        boolean sek, aktie1, aktie2;
    private void timer1OnTime(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        
        //timer
        
        if(gestartet)
        {
            sekunden=sekunden+1;
            lblspieldauer.setText(String.valueOf(sekunden));
        }
        
    }

    private void btnendeActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        
        System.exit(1);
        
    }

    private void btnspielfActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        
            gestartet=true;
            timer1.start();
            
    }

    private void btnpauseActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        
        gestartet=false; 
        
    }

    private void btnnstActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        
        gestartet = false; 
        sekunden  = 0;
        lblspieldauer.setText(String.valueOf(sekunden));
        
           Random r = new Random();
        
        if(gestartet)
        {
            sekunden=sekunden+1;
            lblspieldauer.setText(String.valueOf(sekunden));
           
           
            }
        
        gestartet=true;
        timer1.start();
        
        
        
        //Spiel

        akt1 = r.nextInt(500)+20;  
        akt2 = r.nextInt(500)+20;
        
        
        lblwerta1.setText(String.valueOf(akt1 + "  €"));
        lblwerta2.setText(String.valueOf(akt2 + "  €"));





Bitte bitte helft mir schnell, es ist ganz dringend!!!

Vielen Dank

mfg

draxon
 
Wieso anhalten?
Du musst ja die vergangenen Sekunden messen.

Das geht so:
Code:
long startzeit = System.currentMillis();

//irgendeine Code
//...

long vergangeneZeit = System.currentMillis() - startzeit;

Und das machst du in einer Endlosschleife.

Liebe Grüße
Reality
 
hm.... also ich peil das nicht wirklich tut mir leid...

ich dachte anfangs an if (sekunde=sekunde+1), aber das geht ja nicht, weil sekunde kein boolean ist... ich fänd es furchtbar nett, wenn mir jemand son code hier mal mit erklärung reinstellt THX

mfg

draxon
 
Versuch das mal in deinem Code einzubauen.
Hiermit misst du, wieviel Zeit vergangen ist:

Code:
long startzeit = System.currentMillis();
while(true){

  //dein Code
  //...

  long vergangeneZeit += System.currentMillis() - startzeit;

  if(vergangeneZeit >= 1000){
    //Dann Aktionkurs aktualisieren. Hier kommt dein Code rein.
    vergangeneZeit = 0;
    startzeit = System.currentMillis();
  }
}

System.currentMillis() gibt dir die Anzahl der vergangenen Millisekunden zurück, die seit 1970 vergangen sind.
 
er verwendet hier keinen Thread!
er verwendet einen timer1 (Bean) der nach jeder Sek. timer1OnTime(blabla) aufruft!
du kannst den Timer stopen mit timer1.stop();
jedoch wieß ich nicht was geschieht wenn du ihn wieder startest!?
 
so, ich habs jetzt doch hinbekommen!!!


Code:
 //Allgemeine Variablen
        int z, menge;
        double akt1, akt2, anteil,preis, kapital,kurs1,kurs2, vermoegen,k1=1,k2=1,ks1;
        boolean aktie1, aktie2;
        Random r = new Random();
        private void btnnstActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
       
        gestartet = false;
        sekunden  = 0;
        lblspieldauer.setText(String.valueOf(sekunden));
       
        if(gestartet)
        {
            sekunden=sekunden+1;
            lblspieldauer.setText(String.valueOf(sekunden));
        }
       
        gestartet=true;
        timer1.start();
       
       
        //Spiel
       
       
       
        akt1 = r.nextInt(500)+20; 
        akt2 = r.nextInt(500)+20;
         
       
       
        // Kaufen
         kapital = 1500;
         menge = Integer.parseInt(txtkaufenanzahl.getText());
         
       
       
        }
       
        private void btnpauseActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
       
        gestartet=false; 
        }

    private void btnendeActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
       
        //Ende
        System.exit(1);
       
    }
   
    private void timer1OnTime(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
        Graphics g;
        g=panela1.getGraphics();
        //timer
       
        if(gestartet)
        {
            ks1=k1;
            sekunden=sekunden+1;
            lblspieldauer.setText(String.valueOf(sekunden));
            kurs1 = Math.random()-0.5;
          kurs2 = Math.random()-0.5;
         k1 = kurs1/100+k1;
         
         k2= kurs1/100+k2;
         lblwerta1.setText(String.valueOf(akt1*k1 + "  €"));
        lblwerta2.setText(String.valueOf(akt2*k2 + "  €"));
         lblvermoegen.setText(String.valueOf(k1));
        g.drawLine(sekunden,(int)(k1*100)/2, sekunden+1,(int)( ks1*100)/2);
        }
       
    }

    private void btnspielfActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:

            gestartet=true;
            timer1.start();
       
    }

    private void cmbkaufenActionPerformed(java.awt.event.ActionEvent evt) {
        // Add your handling code here:
    }
   
    /** Exit the Application */
    private void exitForm(java.awt.event.WindowEvent evt) {
        System.exit(0);
    }
   
    /**
     * @param args the command line arguments
     */
    public static void main(String args[]) {
        new JFrame().show();
    }
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben