Files |  Tutorials |  Articles |  Links |  Home |  Team |  Forum |  Wiki |  Impressum

Aktuelle Zeit: Fr Jul 18, 2025 11:07

Foren-Übersicht » Programmierung » Allgemein
Unbeantwortete Themen | Aktive Themen



Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Autor Nachricht
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2003 19:13 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 30, 2003 14:00
Beiträge: 31
Wohnort: Wissen
Hallo....ist das jetzt richtig, dass ich die Frage hier poste; oder sollte ich sie lieber per E-Mail an Sos stellen???
Auch egal...ich hab mir mal gedacht SoS's Bomberman-Tut zu verwenden um einen Pacman-Clone zu erstellen.Sieht bis jetzt auch gut aus; ich habe da allerdings momentan ein kleineres Problem:

Sobald Pacman auf ein Feld eines bestimmten Typs kommt(hier Typ 2), soll die verwendete Textur auf genau diesem Feld durch eine neue Textur ersetzt werden.
Ich habe mir das mal GROB so gedacht:

Code:
  1. if Pacman.Position :=PlayGround[i,j].FType.2  then PlayGround[i,j].Texture:=schwarz.tga


Das klappt natürlich nicht; ich wäre also für einen besseren Vorschlag dankbar.

Toll...ich wollte eigentlich noch ne 2. frage stellen, die umfangreicher gewesen wäre; nur ist mir beim Verfassen gerade möglicherweise selbst ne Lösung dazu eingefallen :) ...ansonsten kann ich hier ja immer noch um Hilfe bitten :rolleyes: :rolleyes:


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2003 20:37 
Offline
Fels i.d. Brandung
Benutzeravatar

Registriert: Sa Mai 04, 2002 19:48
Beiträge: 3830
Wohnort: Tespe (nahe Hamburg)
Wieso sollte das nicht funktionieren? Abgesehen davon, des man in einer IF-Abfrage keine Zuweisung macht. Aber technisch ist das schon nicht ganz so verkehrt. Vergiß Du evtl. irgendwie die Textur zu setzen? Gib mal ne näher Beschreibung des "Problems" ;)

_________________
"Light travels faster than sound. This is why some people appear bright, before you can hear them speak..."


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2003 21:10 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 30, 2003 14:00
Beiträge: 31
Wohnort: Wissen
Jaja...vom Ansatz her isses richtig,nur das Problem ist, rauszufinden(oder festzulegen) wie (und wo) die aktuelle Position Pacmans(oder allgemein einer figur ausm Bomberman-Tut) definiert ist.
Weil mit pacman.position is sie nit definiert; das war nur zur (misslungenen) Verdeutlichung des probs.
Das mim *.tga laden is ja kein Thema.

Kurz:Es geht nur darum, dass ich wissen will, wie man die aktuelle Position einer Figur deklarieren kann (alles am BomberMan Beispiel angelehnt) und dann sagt, dass die Textur des Feldes ausgetauscht wird, wenn diese Figur auf dem Feld eines bestimmten Typen steht.


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2003 21:14 
Offline
DGL Member
Benutzeravatar

Registriert: Mo Sep 23, 2002 19:27
Beiträge: 5812
Programmiersprache: C++
Eigentlich steht ja zu Beginn des Tuts, das man recht gute Delphikenntnisse mitbringen soll...dein Problem hat ja nix mit OpenGL zu tun!
Die Position ist doch bereits gegeben (muss ja), und zwar in der entsprechenden Eigenschaft von TPlayer.Das Feld auf dem deine Figur dann steht, lässt sich doch einfach rausfinden in dem du die Position des Spielers per Round zu einem Integerwert rundest.Dann hast du die Feldposition des Spielers und kannst dann direkt auf das Feld-Array zugreifen und die Textur verändern...ich weiss jetzt ehrlich gesagt nicht wo da dein Problem liegt.Wenn du die Tuts gewissenhaft durchgearbeitet hast, sollte eine solche Frage eigentlich gar nicht erst aufkommen...

_________________
www.SaschaWillems.de | GitHub | Twitter | GPU Datenbanken (Vulkan, GL, GLES)


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Do Jul 03, 2003 21:56 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 30, 2003 14:00
Beiträge: 31
Wohnort: Wissen
AAAARRRRRRRGGGGGGHHHHHHH.......stimmt........AUA................hab die Zeilen beim durchforsten übersprungen....hab mich schon gewundert, wo die Position definiert ist...habs mir die letzte Woche sogar noch kommentiert seh ich gerade; is mir aber nit aufgefallen, da ich mim notepad danach gesucht hab.......thx


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 01, 2004 01:35 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 30, 2003 14:00
Beiträge: 31
Wohnort: Wissen
Sers Leute!
Also....ich hab heut mittag beim durchforsten auf meiner HD nochmal den angefangenen Ansatz von dem Pacman-Klon gefunden und hab mir gedacht, dass ich den heute/morgen mal vervollständige :)

Allerdings hab ich atm ein Problem:

Code:
  1. if Hi(GetAsyncKeyState(KeyDown)) = 128 then
  2.  begin
  3.  Direction  := 0;
  4.  if IsPositionValid(Position.x, Position.z+0.05*BomberManGame.TimeFactor*Speed+Size/2) then
  5.   Position.z := Position.z+0.05*BomberManGame.TimeFactor*Speed;
  6.  exit;
  7.  end;


Das is der Souce aus dem Tut fürs bewegen. Da Pacman aber nachdem man einmal(!) kurz die Taste gedrückt hat weiterläuft, würde ich das auch gerne verwirklichen.
Aber ich kriges nit wirklich hin :( Habs mit Schleifen& Tastendrucksimulation probiert, aber ging halt net.
Kann mir einer helfen?
Danke


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 01, 2004 06:36 
Offline
DGL Member
Benutzeravatar

Registriert: Do Dez 05, 2002 10:35
Beiträge: 4234
Wohnort: Dortmund
Ich glaube das Einfachste ist, das du die überprüfung der Tasten und die Bewegung deines PacMans trennst. Beim Druck auf eine Taste speicherst du einen Richtungswert in Direction (z.B.: 1-4). Und ein Stück weiter unten Verschiebst du je nach was in Direction steht deine PacMan. Dann wird er auch verschoben auch wenn du gar keine Taste mehr drückst. Das wars.

PS: Um das Ganze zu perfektionieren könntest du Direction null setzen sobald eine Wand erreicht hast. Somit würdest du rechenzeit sparen, da er sich an der Wand eh nicht mehr weiter bewegen kann.

PPS: Es bietet sich meist an komplexere Berechnungen in eine temporäre Variable aus zu lagern. Speziell wenn man diese Berechnungen sehr häufig durchführen muss.
Code:
  1.  temp := Position.z+0.05*BomberManGame.TimeFactor*Speed;
  2.  if IsPositionValid(Position.x, temp+Size/2) then
  3.   Position.z := temp;
  4.  exit;


Nach oben
 Profil  
Mit Zitat antworten  
 Betreff des Beitrags:
BeitragVerfasst: Mo Mär 01, 2004 15:40 
Offline
DGL Member
Benutzeravatar

Registriert: Mi Apr 30, 2003 14:00
Beiträge: 31
Wohnort: Wissen
Danke...klappt super :)


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 8 Beiträge ] 
Foren-Übersicht » Programmierung » Allgemein


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste


Du darfst keine neuen Themen in diesem Forum erstellen.
Du darfst keine Antworten zu Themen in diesem Forum erstellen.
Du darfst deine Beiträge in diesem Forum nicht ändern.
Du darfst deine Beiträge in diesem Forum nicht löschen.
Du darfst keine Dateianhänge in diesem Forum erstellen.

Suche nach:
Gehe zu:  
  Powered by phpBB® Forum Software © phpBB Group
Deutsche Übersetzung durch phpBB.de
[ Time : 0.007s | 14 Queries | GZIP : On ]