AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Pac-Man Hilfe

Ein Thema von Zwinge112 · begonnen am 10. Apr 2015 · letzter Beitrag vom 23. Apr 2015
Antwort Antwort
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#1

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 14:46
Beim Programmablauf ist es seltener ein Problem, aber beim Debuggen wird es spassig, außer man debuggt schneller, als die Timer zuschlagen.

Der Debugger müsste die Timer anhalten und um die Pausenzeiten verlängern.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.874 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 14:48
Beim Programmablauf ist es seltener ein Problem, aber beim Debuggen wird es spassig, außer man debuggt schneller, als die Timer zuschlagen.
Das können aber nur die Schweizer
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#3

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 15:08
Also das Game ist ausgelegt auf 60 Frames per Sekunden...
Darüber wird alles gesteuert...

Habe ich habe im Web einen netten Ansatz gefunden...

Falls die 60 Frames nicht erreicht werden, nimmt der eine Wait Array

Beispiel:

1,1,1,1,1,1,1,1,1,1 100%
1,0,1,0,1,0,1,0,1,0 50%
1,1,0,1,1,0,1,1,0,1 usw...

Bei einer 1 bewegt sich Pac Man oder eben die Geister bei einer 0 nicht...
So kann ich im Low Bereich auch die unterschiedlichen Geschwindigkeiten machen...

Dann geht das mit einem Timer...
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#4

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 15:22
Und was ist bei 73,4%?

Man nimmt die Zeit bis vorm letzten Zeichnen und weiß, wie weit man sich jetzt bewegen muß.
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Mavarik
Mavarik

Registriert seit: 9. Feb 2006
Ort: Stolberg (Rhld)
4.154 Beiträge
 
Delphi 10.3 Rio
 
#5

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 15:31
Und was ist bei 73,4%?

Man nimmt die Zeit bis vorm letzten Zeichnen und weiß, wie weit man sich jetzt bewegen muß.
Pac-Man ist aber Pixelorientiert und nicht darauf ausgelegt Pixel zu überspringen!
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#6

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 15:41
Das kann man ja ändern.

* Intern mit Teilpixelrechnen
* auf ganze Pixel gerundet anzeigen
* oder intern mit ganzen Pixeln rechnen, aber über längere Zeit die Geschwindigkeit berechnen/verrechnen
* ...
* Zwischenschritte interpolieren
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 16:08
Und was ist bei 73,4%?

Man nimmt die Zeit bis vorm letzten Zeichnen und weiß, wie weit man sich jetzt bewegen muß.
Pac-Man ist aber Pixelorientiert und nicht darauf ausgelegt Pixel zu überspringen!
Es gibt ein Zell-Raster und ein Schritt-Raster. Das Schritt-Raster hat zur damaligen Zeit (Auflösung) direkt auf das Pixel-Raster gepasst. Das geht heute nicht mehr, sonst braucht man eine Lupe.
Beim Programmablauf ist es seltener ein Problem, aber beim Debuggen wird es spassig, außer man debuggt schneller, als die Timer zuschlagen.

Der Debugger müsste die Timer anhalten und um die Pausenzeiten verlängern.
Das kann man auch anders unterdrücken, indem man zwar die Zeiten berücksichtigt, aber egal wie lange der Zeit zwischen den Berechnungen gedauert hat, es werden maximal nur 2 Schritte berechnet.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (14. Apr 2015 um 16:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.360 Beiträge
 
Delphi 12 Athens
 
#8

AW: Pac-Man Hilfe

  Alt 14. Apr 2015, 16:30
Diese Aussage bezog sich nur auf mehrere Timer. (noch ohne die Betrachtung einer Interpolation)

* Timer1 = 100 ms
* Timer2 = 500 ms

Timer1 müsste also 5 Mal so oft auslösen, wie Timer2,
aber wenn man jetzt mehr als 100 ms benötigt, zum Debuggen einer Methode (bis zum nächsten ProcessMessage), dann verschiebt sich das natürlich.

Oder besonders schön wird es, wenn man ProcessMessages im Code drin hat.
* Timer-Event benöigt 10 ms, das Timer-Intervall ist 100 ms
Das geht normaler Weise, wenn man jetzt debuggt und mehr als 100 ms bis zum ProcessMessages braucht, dann debuggt man sich in eine Endlosschleife, weil in dem ProcessMessages der Timer erneut ausgelöst wird, bevor das aktuelle Event fertig geworden ist.
Ein Therapeut entspricht 1024 Gigapeut.

Geändert von himitsu (14. Apr 2015 um 16:34 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz