Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

KahnSoft

Frischling

Beiträge: 59

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 382

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: 59

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