Wie mache ich eine Kollision in Pygame?

Das Spiel - (Programm, programmieren, Java)

1 Antwort

Das könnte helfen: http://www.virtual-maxim.de/pixelgenaue-kollisionserkennung/

P.S.: Die Codebeispiele sind zwar für C++ mit DirectX, aber das Prinzip dürfte sich ohne (größere) Probleme übertragen lassen.

Das Problem ist aber, dass das Rechteck um das Foto nicht horizontal liegt, sondern gedreht ist und dass funktioniert dann nicht.

0
@Laurence12345

Normalerweise ist ne Bounding-Box immer horizontal. Nur ggf. mal größer, mal kleiner... Auf welche Weise drehst du das Bild denn?

0

nach oben max. 30° und unten max 20°.

0
@Laurence12345

Ich meinte eigentlich, ob du pygame.transform.rotate(Surface, angle) zum drehen verwendest oder irgendwas anderes?

0

Ja. ich verwende Transform.rotate

0
@Laurence12345

In dem Fall hast du immer noch eine horizontale Bounding-Box... Je nach Winkel nur halt mal größer, mal kleiner...

Siehe auch: https://www.pygame.org/docs/ref/transform.html#pygame.transform.rotate

Die geeignete Methode zur Kollisionserkennung wäre also:

1. Für jedes Hindernis mit pygame.mask.from_surface eine Kollisionsmaske erstellen. (Und z.B. in ner "list" speichern)

2. Das Flugzeug mit pygame.transform.rotate drehen.

3. Mit pygame.mask.from_surface eine Kollisionsmaske des (gedrehten) Flugzeugs erstellen. (Diese bis zur nächsten Rotation zwischenspeichern)

4. Mit pygame.Rect.colliderect überprüfen, ob die Bounding-Box des Flugzeugs eine Überschneidung mit der Bounding-Box eines Hindernisses hat und wenn ja, mit pygame.mask.Mask.overlap (oder pygame.mask.Mask.overlap_area) überprüfen, ob die Kollisionsmaske des Flugzeugs mit der Kollisionsmaske des Hindernisses eine Schnittmenge größer Null hat, wenn ja: "BOOM!" ;)

P.S.:
Siehe auch: https://www.pygame.org/docs/ref/mask.html

1

CPU Kühler nicht richtig fest?

Ich habe meinen neuen CPU Kühler eingebaut.

Wenn ich aber meinen PC hinstellen möchte, kippt er minimal nach vorne

und hat somit keinen Kontakt mehr zur CPU. Demnach kühlt er dann nicht. Wenn der PC liegt, funktioniert alles bestens. Der Kühler ist aber definitiv richtig fest geschraubt.. Am3+ Sockel (Pure Rock be quiet! Kühler) (V1 IC VALUE CoolerMaster Wärmeleitpaste)

...zur Frage

Java Programm Problem mit JTextField?

Hi, ich muss dringend ein Programm mit folgender Aufgabenstellung schreiben:

Erstelle eine Applikation, die eine "Hangman"-Grafik für 10 Schritte darstellt. Diese Grafik soll zu Testzwecken über ein Textfeld und einen Slider gesteuert werden können (im Bereich 0-10). Das Textfeld aktualisiert gleich bei Änderung des Wertes die Grafikund wartet nicht erst auf das Drücken der Eingabetaste. Wenn im Textfeld ein ungültiger Wert eingegeben wird, dann wird statt der Grafik eine Fehlermeldung angezeigt (mit der Methode drawString kann auch Text "gezeichnet" werden), sollte dort gar kein Wert stehen, dann soll die Grafik leer bleiben.

Bei meinem Programm funktioniert die Änderung der Grafik über den JSlider einwandfrei, die Eingabe über das Textfeld bewirkt aber keine Veränderung und die Überprüfung bei Eingabe eines falschen Wertes habe ich probiert, jedoch wird danach gar nichts mehr angezeigt. Ich verstehe nicht was falsch ist, da die Vorgangsweise beim JTextField wie bei JSlider ist...

Da es dringend ist, wäre ich für Hilfe sehr dankbar. Den Quellcode beider Klassen habe ich gescreenshotet.

Die Frame-Klasse:

Die Panel-Klasse:

...zur Frage

Flugzeugabsturz frage?

Also ich hab da mal ne Frage. Also bevor die Leute mit dem Flugzeug auf dem Berg Aufgeprallt sind. Spüren sie den schmerz bevor sie ganz schnell tot sind? Oder sind sie schon zuschnell tot. Ich denke bevor man stirbt haben die Leute den grössten schmerz erlitten. Was denkt ihr?

...zur Frage

Welche Programmiersprache sollte ich erlernen?

Sehr geehrte Gemeinde,

Also es ist so. Ich interessiere mich für das Erlernen wie man Programme bzw. Anwendungen, Scripts und sonstiges schreibt. Ich plane eine konkrete Ausbildung in einer dieser Sprachen zu machen.

Ich bin sehr interessiert daran und weiß auch das es schwer wird, das ist keine Frage.

Ich hab allerdings jetzt keine richtige Ahnung in welcher Sprache ich mein Wissen aufbauen bzw. einen Lehrgang starten soll.

Ich habe mich schon ein wenig informiert und kenne vom Namen folgende gebräuchlichen Programmiersprachen, mit einer von denen ich mich dann auch weiterbilden möchte:

C, C++, C#, Java, Visual Basic oder Visual Basic for Applications (VBA).

Des Weiteren bin an Python interessiert, weil eines meiner persönlichen Lieblingsprogramme in Python geschrieben ist. Mit Python möchte ich aber keinen Lehrgang belegen.

Es wird sich ausschließlich um eine der oberen Programmiersprachen handeln.

Kann jemand von euch, der sich vielleicht schon mit der ein oder anderen oder sogar mehreren von denen auskennt, mir Tipps geben, welche Programmiersprache, die besten Möglichkeiten (auch in der Zukunft) gibt bzw. was für Einschränkungen bei diesen bestehen?

Ich möchte einmal hochleistungsfähige Programme schreiben.

Auf der Einfachheit liegt überhaupt kein Betrachtungspunkt.

Es kann also schwer sein, wenn es dafür entsprechend flexible Möglichkeiten bietet.

Bei Java habe ich schon gehört, dass man hiermit plattformübergreifende Applikationen schreiben kann.

Vielen Dank für Eure/deine Hilfe.

...zur Frage

Gibt es maximale Zeichenanzahl in Text Dateien?

ich lerne mich aktuell etwas im Bereich der Programmierung ein (html, CSS, XML, json, usw), bin neu auf dem Gebiet. Komme aber gut voran. ich arbeite mit ein paar Kumpels an einem eigenen kleinen technologie Service und für diesen kostenpflichtigen Service haben wir auch schon ein paar Kunden, die wir in einer Kundendatenbank pflegen (Name, Adresse usw). wenn wir jz ein Backup von dieser MySQL Datenbank machen schreibt mysqldump die Inhalte in eine gesonderte Text Datei. dabei werden die gesamten Daten aus jeder tabelle in jeweils EINE Zeile in die Text Datei geschrieben. Wenn ich nun diese Text Datei im emacs Editor öffnen ist zb die Zeile , in dem daten aus der Kunden Tabelle stehen, Kilometer lang, so das ich lange scrollen muss um ans Ende zu kommen. 

ist das richtig so? Gibt es eine maximale Zeichen Begrenzung pro Zeile? Nicht das uns Kunden Daten verloren gehen. wir verwenden als Betriebssystem Linux red hat und die backup Text Datei ist insgesamt 3.5 Giga Byte gross, falls es relevant sein sollte.

...zur Frage

Flugzeuge im FSX werden nicht richtig angezeigt?

Ich habe mir ein paar Freeware Flugzeuge geholt, unter anderem den A330 von Airberlin und ein ganzes A340 packet, jedoch ist das Flugzeug dann verbugt und die Textur wird nicht richtig geladen. Es hat aber auch schon bei der B 747-8 funktioniert! Liegt es an meiner Grafikkarte oder an was anderem? (Unten könnt ihr sehen was ich meine!)

...zur Frage

Was möchtest Du wissen?