Du bist nicht angemeldet.

Werbeanzeige

KahnSoft

Frischling

Beiträge: 56

Wohnort: Berlin

  • Private Nachricht senden

21

15.08.2022, 11:07

hahah.. :-) Du kriegst das schon hin, eine Haupt Fähigkeit des Programmierers ist sein krankhafte Hartnäckigkeit :-)

David Scherfgen

Administrator

Beiträge: 10 352

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

22

15.08.2022, 12:06

Ne versuche gerade die Kollision hinzukriegen, wieso soll ich dan nochmal bei Null anfangen?!

Ist nicht böse gemeint, aber in diesem Zustand ist der Code kaum noch zu retten. Schau dir mal die Schleifen an. Die tun garantiert nicht das, was du willst. Bring das erst einmal in Ordnung. Bei der kleinen Menge Code ist es wahrscheinlich besser von vorne anzufangen, beim zweiten Mal wird's garantiert besser. Danach versuchst du dich an der Kollision.

KahnSoft

Frischling

Beiträge: 56

Wohnort: Berlin

  • Private Nachricht senden

23

15.08.2022, 12:19

Der Dave hat leider Recht, es ist noch nicht der richtige Move.
Mach mal folgendes, 2 Gänge zurück, mach ein Fenster und lade ein Bild, dann mache Kollisionsstest mit deine Maus auf die Linien, zeige mit Text neben dem Cursor
die Zustandaparameter deiner Detektion an, und sieh zu wie du das dann automatisierst, es muss jeder selber da durch, zuvor sollte man einen mini Text Editor mal getipselt haben
denn der enthält eine menge Fachkunde man lernt daraus, mit Zeit Begrenzung wird das nichts, das musst Du in der Freizeit machen.
Natürlich bist Du geistig in der Lage alles hervor zu bringen keine Frage, Übung macht aber den Meister.

Grüße
Meister Karsten

24

17.08.2022, 11:53

Haha ich habs geschafft in einer weiteren verkorksten Schleife und es klappt perfekt

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 for (auto& wall : walls){
 
    FloatRect wallBounds = wall.getGlobalBounds();
    FloatRect playerBounds = player.getGlobalBounds();
    
nextPos = playerBounds;
nextPos.left += Vec.x/4;
nextPos.top += Vec.y/4;
    
    if(wallBounds.intersects(nextPos)){
            
    
 if (Vec.y > 0 && playerBounds.left < wallBounds.left + wallBounds.width && playerBounds.left + playerBounds.width > wallBounds.left) 
     { 
    Vec.y = 0;
player.setPosition(playerBounds.left, wallBounds.top - playerBounds.height); 
walls[2].setFillColor(Color::Green);
      }
      
if(Vec.y < 0 && playerBounds.left < wallBounds.left + wallBounds.width && playerBounds.left + playerBounds.width > wallBounds.left) 
      {
        Vec.y = 0;
player.setPosition(playerBounds.left, wallBounds.top + wallBounds.height); 
        }   
 
if(Vec.x > 0 && playerBounds.top < wallBounds.top + wallBounds.height && playerBounds.top + playerBounds.height > wallBounds.top)
           { 
          Vec.x = 0;
player.setPosition(wallBounds.left - playerBounds.width, playerBounds.top); 
           }

if (Vec.x < 0 && playerBounds.top < wallBounds.top + wallBounds.height && playerBounds.top + playerBounds.height > wallBounds.top)
              { 
              Vec.x = 0; 
player.setPosition(wallBounds.left + wallBounds.width , playerBounds.top); 

              }
        
      }
    
    
    
 }

Timmyew

Treue Seele

Beiträge: 128

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

25

17.08.2022, 19:48

Hehe,

siehst du Jan :).
Es klappt, wenn man dran bleibt.
Herzlichen Glückwunsch!!!

Werbeanzeige