Street !



  • Hi !

    Ich hab mal eine zufallstraße programmiert und wollte fragen, wie ich da jetzt ein
    Auto reinbekommen kann, welches ich steuern kann 1?

    #include <iostream>
    #include <ctime>
    #include <windows.h>
    #include "conioex.h"
    using namespace std;
    
    int main()
    {
         int richtung;
         int posx=30;
    	 int posy=1;
    	 int i=0;
    	srand(time(NULL));
    
    	for (;;)
    	{
    
    	richtung=(rand()%3)+1;
    
    	if (richtung==1) //rechts
    	{
    	posx=posx+1;
    	}
    	if (richtung==2) //links
    	{
    	posx=posx-1;
    	}
    	if (richtung==3) //mitte
    	{
    	posx=posx;
    	}
    
    	Sleep(20);
    	gotoxy(posx,posy);
    
    	cout  << char(219) <<"             " << char(219);
    	cout << " ";
    	posx--;
    	gotoxy(posx,posy);
    	cout << " ";
    	posx++;
    	posy++;
    	if(posx>=50) //R
    	{
    
    	posx--;
    	}
    	if(posx==1) //L
    	{
    
    	posx++;
    	}
    
    	}
    
    	return 0;
    
    }
    

    mfg clint



  • wie beendest du eigenzlich die endlosschleife 😕

    ich find kein break



  • mmhm, das sollte nachher kommen...

    wenn autokoordinate gleich straßenkoordinate ! Das ist es vorbei !

    mfg



  • ich würde anstelle der zufallsbestimmten Richtung auf Benutzereingaben reagieren ("char inp=cin.get();switch(inp){...}").

    PS: Falls du auf die Pfeiltasten reagieren oder "nicht-blockierend" einlesen willst, empfehle ich einen Blick in die Konsolen-FAQ.



  • naja, aber dann kann man die Strecke aj immer vorraussehen !

    Eventuell müsste ich das alle mochmal überarbeiten ! ...

    danke

    mfg clint



  • Ich würde es ja so machen, daß ich die aktuelle Richtung in regelmäßigen Abständen kontrolliere und den Wagen entsprechend bewege - dazwischen wird mit "if(kbhit())..." abgefragt, ob der Fahrer eine Taste gedrückt hat und die Richtung entsprechend angepasst:

    const time_t ftime=25;//Frame-Zeit, hier in ms
    time_t t0=time();//am besten wäre eine Auflösung in ms
    while(!crash)
    {
      if(kbhit()
      {
        char ch=getch();
        if(ch==0) ch=getch();//Steuerzeichen = 0/xx
        update_richtung(ch);
      }
      if(time()-t0>ftime)
      {
        update_position();
        zeichne();
        t0=time();
      }
    }
    


  • ok !

    Ich werds probieren ! Werden dem code posten ...


Anmelden zum Antworten