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

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

11

15.08.2008, 09:06

Hallo,
erstmal zu dein Threadersteller.

Die Leute bieten dir hier gute Tips an und du mekerst nur, dass brauchen wir hier nicht.

Zu deiner Frage:
Man muss nur logisch denken um das Problem zu lösen.

Die Koordinaten der Mouse und das abprüfen ob die linke Maustaste gedrückt wurden, sind schon alles was du brauchst.

Ich würde es bei einem Point & Click Spiel wie folgt lösen:

Jedes Objekt, dass man aufnehmen oder anklicken soll, hat eine Eigenschaft wie aufnehmbar oder anklickbar.

Wenn die Maus über solch einem Objekt ist, soll eine andere Grafik genutzt werden um es den Spieler sichtbar zu machen, dass er mit dem Objekt interagieren kann.

Nun musst du für das Objekt eine unsichtbare Box haben, dies sind eigentlich die Ecken der Grafik.

Nun musst du nur Code schreiben, der prüft ob deine Maus innerhalb der Box ist.
Dann muss du noch Code schreiben, der beim aufheben des Objekts einfach die Grafik aus dem Bild löscht.

Ich selbst habe keine Point & Click Spiele entwickelt, da ich immer noch an meinem ersten Spiel seit über 8 Monaten hänge, aber man braucht nur etwas Fantasie und keine Dokus wie sowas geht.

Die obere Lösung ist schnell aus den Fingern gesaugt und vielleicht nicht wirklich effizient aber es ist ein Anfang der dir klar machen soll, dass man sowas nicht dokumentiert findet.

Ansonsten saug dir mal per Subversion den Quelltext von ScummVM.
Da hast du ein Beispiel wie ein Menü mit SDL realisiert wird.
Da kannst du dich dann nach Herzenslust austoben.

EDIT
Anbei arbeite ich in meinem Spiel zwar nur mit der Maus um die Steuerung und später auch das Abschiessen der Waffen zu ermöglichen, aber dies kannst du auch gerne mal durchschauen.

Falls du Subversion benutzt, kannst du die aktuellen Codes somit leichter erhalten.

Ansonsten kann ich dir auch ein extra Paket geben.
Spätestens am 31. habe ich einen neuen release geplant der dann stabil laufen sollte :)
Dann kann ich dir den Client + die sources senden.

MFG T-Virus
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Beneroth

Alter Hase

Beiträge: 969

Wohnort: Schweiz

Beruf: Software Entwickler

  • Private Nachricht senden

12

15.08.2008, 11:29

1) wie gesagt, Frage konkreter

Wenn jemand einen Rat weiß wo ich diesbezüglich etwas finden kann, wäre ich sehr Dankbar. --> Antwort: Ja, ich weiss Rat.:badgrin:

2) eine Funktion die dir ausspuckt in welche Richtung die Maus bewegt worden ist o. ä. gibts nicht, die musst du selber machen.

Es gibt eine Funktion um die Mausposition zu bekommen:

Quellcode

1
Uint8 SDL_GetRelativeMouseState(int *x, int *y);


die fütterst du mit zwei int-pointern:


Quellcode

1
2
3
4
int x,y;

// Aktuelle Mausposition holen
SDL_GetRelativeMouseState(&x,&y);


Nun hast Du in x und je eine Zahl die der Position der Maus in deinem screen-surface entspricht, 0/0 ist die ecke oben links.

Wenn du eine Bewegung feststellen willst musst Du dir die x/y-Koordinaten des/der letzten Durchgangs merken und mit den neuen vergleichen, wenn sie grösser werden wird die maus nach rechts bzw. unten bewegt, wenn sie kleiner werden nach links bzw oben.

Ob die Maus auf nem Objekt ist stellst du fest indem du weisst wo es objekte hat, die hast ja du dort platziert, kennst also deren x/y-Position (deren obere linke ecke) und ihre länge und breite. daraus ergibt sich ein bereich, und du testet ob x und y vom Mauszeiger in dem bereich liegen.


Und die SDL ist gut dokumentiert, sehr gut sogar wenn man mit einigen anderen Sachen vergleicht. Lade hier die Doku runter, falls du diese seite bis jetzt nicht gefunden hast solltest du suchen üben, gehört zu den wichtigsten fähigkeiten im informatik-bereich.

und freundlichkeit kommt auch immer gut an. :roll: