Processing millis() in Vaiablen speichern?

3 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

time1 kann niemals größer als time1 selbst sein.

if(time1 >= time1 + 5000){ <- tritt niemals ein

Du meinst bestimmt sowas wie:

if(millis() >= time1 + 5000){

Und dann sieh dir mal Vektorenberechnungen an. Mit einem geeigneten 2D Vektor-Typ gehen Transitions quasi von selbst. Und wie von sebastianla richtig bemerkt, du deklarierrst die Variablen im falschen Scope.

int time1; <- hier oben bekannt geben
if(pause == false){
   if(touchIsStarted){
       if(mouseX >=980 && mouseY <= 100){
           time1 = millis();

Noch was... der Boolean wird nicht benötigt. Generell solltest du Aktionen und Transitions (wie gesagt über Vektoren gehts super) von der Laufgeschwindigkeit des Programms abhängig machen. Heißt die ganze Zeit global die Millisekunden messen und Bewegungen mit der delta-Funktion beschleunigen / abbremsen. So erriechst du, dass die "FPS" von der Physik abgekoppelt werden und du brauchst nur einmal, die sicherlich aufwendigere, millis-Function aufrufen.

if(millis() >= time1 + 5000)
{
       time1 = millis();
       ball_speed_y = track_ball_speed_y;
}
0

Danke für den Tipp oben, hat mir den Anstoß gegeben nochn bisschen rumzuexperimentieren. :) Ob ich mir den Rest mal ansehe muss ich noch gucken, will mir programmieren nämlich über YouTube Tutorials beibringen, und mich davor nicht verwirren.

0

Die Zeile

int time1 = millis();

legt eine blocklokale Variable time1 an und initialisiert diese mit dem Rückgabewert von millis.

Diese Variable wird aber danach nicht mehr verwendet. Beim } geht sie aus dem Sichtbarkeitsbereich.

Und wie sollte ich es dann deiner Meinung nach schreiben?🤔😁

0

Danke, klappt so!

0

Der Code:
if(pause == false){
if(touchIsStarted){
if(mouseX >=980 && mouseY <= 100){
int time1 = millis();
int time2 = millis();
ability1 = true;
track_ball_speed_y = ball_speed_y;
ball_speed_y = ball_speed_y * 0.9;
ball_speed_x = ball_speed_x * 0.9;
}
}
}
if(time1 >= time1 + 5000){
ability1 = false;
ball_speed_y = track_ball_speed_y;
}
Die Variablen:
int time1;
int time2;
int score;
float player_x;
float player_y;
float ball_x;
float ball_y;
float ball_speed_x;
float ball_speed_y;
float track_ball_speed_y;
PImage start;
PImage pause_image;
PImage continue_image;
PImage top_bar;
boolean pause = false;
boolean ability1 = false;

Wertzuweisung bei Java: "<identifier> expected"?

Moin.

Code auf Pastebin: https://pastebin.com/MVqXvjXX

Tut mir leid für das doofe Quellcode-Format am Ende. Ich hoffe, man kann mir trotzdem helfen. Und bitte keine Verbesserungsvorschläge für den Code an sich. Nur die Fehler beheben, danke.

Ich möchte in einem GUI ein Quiz programmieren. Vorerst mit 40 Fragen, aus denen zufällig 10 gewählt werden.

Ich habe allerdings 5 angezeigte Fehler:

Fehler 1: illegal start of type (bei switch und Frage) Fehler 2: expected (bei switch und Frage) Fehler 3: cannot find symbol (bei Frage) Fehler 4: expected (tritt bei jedem auf) Fehler 5: cannot find symbol (bei Frage)

(Das "bei X" sieht man unten im Quellcode).

Ich weiß echt nicht was ich falsch gemacht habe. In falschen Methoden ist es ja nicht geschrieben z. B.

Ich habe mir gedacht, dass ich einen jFrame mit 3* jLabel und 4* jButton mache. Es soll im Hintergrund als Variable "Frage" als Integer-Wert eine zufällige Zahl zwischen 1 und 40 generiert werden. Der entsprechende case wird in der switch-Anweisung ausgeführt. Wenn dem so ist, wird die entsprechende Zahl in die ArrayList gepackt. Nach dem Generieren einer neuen Zahl wird geprüft, ob diese Zahl bereits in der ArrayList ist. Wenn ja, wird eine neue generiert (damit keine doppelt kommt) und wenn nein, dann wird die Zahl ausgeführt.

Nun habe ich aber die obigen Probleme. Kann mir da jemand helfen?

Außerdem fügt er mit alleFragen.add("1"); die 1 nicht zur ArrayList alleFragen hinzu, weshalb?!

Danke im Voraus!

Programmiere in NetBeans!

import java.util.ArrayList;

public class Quiz extends javax.swing.JFrame {

ArrayList alleFragen = new ArrayList();

int Frage;

int Timer = 30;

byte ausgewählteAntwort = 0;

Frage = (int) (Math.random()*40+1); 

// Fehler 1: <identifier> expected (tritt bei jedem auf)

// Fehler 2: cannot find symbol (bei Frage)

// Ich kann nicht schreiben "int Frage = (int) Math.random*40+1", weil diese Generierung in eine Schleife muss

 switch (Frage) {

// Fehler 1: illegal start of type (bei switch und Frage)

// Fehler 2: <identifier> expected (bei switch und Frage)

// Fehler 3: cannot find symbol (bei Frage)

// Sobald ich switch in eine Schleife packe (was ich eigentlich muss), hat switch keinen Fehler mehr, aber bei 

// der switch kommen IMMER die Fehler illegal start of type und <identifier> excepted. Bei der Variable in der 

// Klammer kommt zusätzlich noch der Fehler cannot find symbol. In der Schleife kommt bei jedem "Inhalt" des

//  Frames (z. B. jLabel oder jButton) der Fehler illegal forward reference.

case 1 : 

// Fehler: orphaned case

alleFragen.add("1");

UND SO WEITER; HIER KOMMEN DIE WEITEREN CASES, ALLE WÄREN ABER ZU LANG UND SO HABE ICH MICH AUFS NÖTIGSTE BESCHRÄNKT!

...zur Frage

Was tun, wenn Informatiklehrer nicht einlenkt trotz richtiger Lösung?

Hey Leute, wir schrieben ein Ex im Fach Informatik und bei der Herausgabe stellte sich schon heraus, dass mir Bewertungseinheiten abgezogen wurden trotz richtiger Lösung bzw. richtigem Code. Es waren ganz banale Schreibweisen, die ich mir so beigebracht hatte wie z.B. bei der Array Deklaration, dass ich anstatt Datentyp[ ] variable halt Datentyp variable[ ] geschrieben hatte und der Lehrer mir schon Punkte abzog. Aber auch statt dem logischen Operator && !Methode() gleich &! geschrieben habe. Dafür habe ich schließlich meine Punkte bekommen, aber bei 2 Sachen wurde er sehr unfreundlich und hat mir deutlich gemacht, dass ich seine Korrektur nicht anzweifeln soll. Ich habe nämlich statt in einer Zeile Array deklariert und initialisiert, dies in 2 Zeilen getan und der hat mir dies als Fehler angestrichen obwohl es richtig ist. Begründung: Unsauberes Programmieren.

Was meint ihr nun? Was macht man dagegen? (Er ist auch leider der einzige Informatiklehrer an der Schule...)

...zur Frage

C++ komplettes Array in eine Variable speichern?

Hallo ich arbeite von der Hochschule aus an deinem Morsecode Projekt und hänge gerade an einem Problem.

Beim einlesen vom Morsecode habe ich das Problem, dass ich einzeln bis zu einem Leerzeichen die Punkt-Strich Kombination einlese und dann möchte ich das Array mit meiner Konvertierung vergleichen (also .- wird zu A, -... wird zu B etc.). Das Problem dabei ist, dass ich ein Array in das ich die einzelnen Punkt-Strich Kombinationen einlese nicht vergleichen kann sondern ich es nur als Zeiger fungieren lassen kann. Wie bekomme ich ein Array in eine "normale" Variable um sie zu vergleichen bzw. gibt es eine einfachere Variante. Der gesamte Code ist leider zu lang zum reinstellen hier ein Teil (der *Buffer ist das Problem):

    for (int i=0; i<10; i++)
        buffer[i] = 0;

    for (iB; iB < nLeerz; iB++)
    {
        buffer[iB] = feldMA[iB];
    }                                
    
    vergleicher = *buffer;

    switch (*buffer)
    {
    case '·-': printf("A");
        break; 
...zur Frage

wie kann man in Visual Basic eine Zeile in einer Text Datei Kopieren und als Variable Speichern?

Guten abend,

Ich möchte ein Programm schreiben, welches ein bestimmtes Wort in einer Textdatei sucht und dann die ganze Zeile Kopiert, um sie dann in einer neuen Datei zu schreiben. Ich habe bereits alles zusammengesammelt, nur fehlt mir der Code zum Kopieren von der Zeile. Der aktuelle Code lautet:

    Dim sr1 As New System.IO.FileStream("Verzeichnis1", IO.FileMode.Open, IO.FileAccess.Read)
    Dim reader1 As New System.IO.StreamReader(sr1)

    Do Until reader1.EndOfStream

        Dim line As String = reader1.ReadLine

        If line.Contains("Gruenkohl") = True Then TextBox("Gefunden!")

        ' Fehlt noch...


        Using StrWriter As New IO.StreamWriter("Verzeichnis2")
            StrWriter.WriteLine("Gefunden") 'Das ist die erste Zeile.
        End Using
        MsgBox("Gefunden!")



    Loop

End Sub

MfG Linus

...zur Frage

Problem bei Programmierung eines Multiplayerspiels (allgemein)?

Wenn ich ein Spiel für 2 Spieler programmiere, es aber an nur einem PC gespielt wird, muss ich dann für jeden Spieler eigene Methoden schreiben?

Wenn es beispielsweise ein Spiel auf einer 2D-Karte ist, muss ich dann 2 Methoden schreiben, dass sich die Spieler bewegen können? Denn ansonsten nutzen sie ja die gleichen Variablen, oder?

Pseudo-Code:

//Bewegung mit W (Spieler 1) und mit UP-Pfeil
//Beispiel: Eindimensionale Position
int pos1 = 0, pos2 = 0; int speed = 5; 
if (keyPressed) {
  if(spieler1_key) { move(1, speed); }
  if(spieler2_key) { move(2, speed); } 
}
  
void move(int spieler, int speed) {
  switch(spieler) {
    case 1: if(pos1+speed != hindernis) {pos1 += speed;}
    case 2: if(pos2+speed != hindernis) {pos2 += speed;}
  }
}

Könnte sixh im Beispiel immer nur ein Spieler bewegen?

Und wenn ja, wie löse ich dann das Problem, dass sich am Ende beide spieler gleichzeitig bewegen können?

...zur Frage

Was möchtest Du wissen?