Make gehört zur Standard djgpp Distribution, und befindet sich in der
Datei v2gnu/mak*b.zip (was auch immer gerade die aktuelle Version ist).
Sie ist hier erhältlich: http://www.delorie.com/djgpp/.
Sind Sie sicher, dass djgpp richtig installiert ist? Lesen Sie
die Anweisungen in der djgpp readme.1st Datei, und stellen
Sie insbesonere sicher dass die DJGPP Umgebungsvariable gesetzt ist und
sich das djgpp\bin Verzeichnis im Datei-Pfad befindet.
Sind Sie sicher, dass Sie das GNU make Programm verwendn, und nicht
eine andere Version, z.B. die von Borland? Falls Zweifel bestehen,
führen Sie make -v aus und überprüfen ob eine GNU Copyright Meldung
erscheint.
Führen Sie make nicht im Windows Explorer aus! Öffnen Sie eine DOS Box,
wechseln in das Allegro Verzeichnis, und geben Sie make in der
Kommandozeile ein.
Es kann sein dass die Systemzeit abweicht oder falsch eingestellt ist.
Außerdem besteht die Möglichkeit, dass Sie eine neue Datei installiert
haben, die von jemandem in einer östlicheren Zeitzone erstellt wurde.
In diesem Fall kann man entweder ein paar Stunden warten (oder die Uhr
kurzfristig vorstellen), oder ein Utility wie touch verwenden um
das Datum der Dateien zu verändern.
Wie die Fehlermeldung andeutet, benötigt der Compiler mehr Speicher.
Das go32-v2 Programm teilt einem mit wie viel Speicher zur Zeit verfügbar
ist. Unter DOS kann es helfen die Swap-Datei zu
vergrößern. Unter win95, erhöhen Sie den DPMI Speicher auf 65536 (muss
manuell eingegeben werden, weil die Liste sonst mit 16384 aufhört).
Wie die Fehlermeldung andeutet, gibt es einen Konflikt zwischen gcc
und einer älteren Version von libc. Bringen Sie ihr
djdevxxx.zip auf den neuesten Stand von DJGPP-2.03 oder
neuer (11. August 2002).
C:\TEMP\ccdaaaaa(.text+0x9):x.c: undefined reference to
`allegro_init'
C:\TEMP\ccdaaaaa(.text+0xe):x.c: undefined reference to
`install_keyboard'
Man sollte immer die Dokumentation lesen :-) Programme müssen immer mit
der Bibliothek, liballeg.a, gelinkt werden. Stellen Sie zuerst sicher, dass alles
korrekt installiert wurde (make install sollte das automatisch machen). Danach,
falls Sie von der Kommandozeile oder mit einem makefile kompilieren,
fügen Sie -lalleg an das Ende des gcc Kommandos, oder falls Sie Rhide
benützten, öffnen Sie das Options/Libaries Menu, schreiben
alleg in das erste freie Feld, und achten darauf dass das Kontroll-Kästchen
aktiviert ist.
Nein, leider nicht. Einerseits ist liballeg.a ca. 450k,
andererseits benötigt man meist auch noch andere Programme, wie den
Grabber, Sound Setup, etc. Nicht zu vergessen all die
Beispielprogramme. Wären kompilierte Versionen aller Programme
enthalten, käme eine Binärversion auf über
7 MB: viel zu groß! Aber im Ernst, es gibt keinen Grund, Allegro
nicht selbst zu kompilieren. Ein Compiler folgt einem ein
deterministischer Ablauf: Aus der selben Eingabe, und mit den
gleichen Optionen, erhält man immer das selbe Ergebnis. Falls es
nicht funktioniert, sind entweder die Eingabe-Dateien falsch (d.h.
es stimmt etwas nicht mit der Allegro-Installation), oder es wird
eine falsche Kommandozeile verwendet (sollte nicht vorkommen, da
alles was man tun muss ist make einzugeben...) oder mit dem
Compiler ist etwas nicht in Ordnung, d.h. er ist nicht richtig
installiert. Finden und beheben Sie das Problem, anstatt es unter
den Teppich zu kehren indem Sie jemand anderen dazu bringen für Sie
zu kompilieren...
GNU Programme schreiben ihre Fehlermeldungen in den Error-Stream,
stderr. Leider kann command.com diesen nicht umleiten. Aber
glücklicherweise hatte DJ den schlauen Einfall das zu umgehen, und
man kann sein redir Programm verwenden um die Ausgabemeldungen in
eine Datei zu leiten, z.B.
redir -eo make > logfile.txt
Hier gibt es unterschiedliche Erfahrungen. Einige Leute haben von
Problemen berichtet, während andere sagen es funktioniert. Wenn Sie
Windows-Programme wollen, benutzen Sie die Windows-Version. Wenn Sie
DOS-Programme ausführen wollen, benutzen Sie DOS!
Ja, aber mit Einschränkungen. Wenn Sie die OpenDOS Version von
EMM386 benützten, müssen Sie deren DPMI Implementierung ausschalten
(DPMI=OFF in der EMM386.EXE Zeile in der
config.sys). Gehen Sie außerdem sicher, dass die PIC=OFF Option
gesetzt ist, aber das ist die Default-Einstellung, es sollte also
kein Problem darstellen.
Es geht nicht. Dieses Limit kommt von der VGA Hardware, nicht von Allegro.
Um auf mehr Speicher zuzugreifen, muss man einen SVGA Modus benutzen,
d.h. entweder eine höhere Auflösung verwenden, oder den SciTech Display
Doctor, der mehrere SVGA Modi mit niedriger Auflösung unterstützt.
Es funktioniert bei einigen, bei anderen nicht. Das Problem ist dass sich
Creative Labs weigert, technische Details zu veröffentlichen, was zur
Folge hat, dass wir nicht wissen, wie wir Treiber für sie schreiben
sollen. Beschwer dich bei ihnen, oder kaufe eine andere Karte von einem
vernünftigeren Hersteller.
Der Grund kann sein, dass die Lautstärke sehr leise gestellt ist:
Versuche sie im Setup-Programm einzustellen. Außerdem mixt Allegro
mehrere Sounds in einen einzigen Ausgabe-Buffer, während der Windows
Sound-Player immer nur ein Sample gleichzeitig abspielt. Das hat zur
Folge, dass jeder Sound nur einen kleineren Prozentsatz des
Gesamtvolumens erhält. Das ist ganz einfach der Preis den man für
mehrere Ausgabekanäle zahlen muss. Wer das nicht will, kann (im
Setup-Programm) die Anzahl der Sound-Kanäle ändern: Es kann eine
beliebige Potenz von zwei sein, kleiner oder gleich 64. Je kleiner,
desto lauter ist der Sound. Eine Alternative ist die
set_volume_per_voice() Funktion, die in der Dokumentation beschrieben
wird. Sie ermöglicht es, das Gesamt-Volumen von Allegros digitaler
Soundausgabe anzupassen.
Versuchen Sie es mit dem den FreeBE/AF Treiber (http://www.talula.demon.co.uk/freebe/),
oder dem kommerziellen SciTech Display Doctor (http://www.scitechsoft.com).
Sollte es immer noch nicht funktionieren, senden Sie eine Beschreibung des
Problems an die Allegro Mailing-Liste, zusammen mit einer Kopie der
Ausgabe der afinfo und vesainfo Programme.
Das VBE/AF Interface tut das sogar, für die Video-Treiber: siehe das
FreeBE/AF Projekt auf http://www.talula.demon.co.uk/freebe/.
Für mehr generelle Dinge wie Sound, VESA, und mode-X Routinen, wäre es
aber sehr kompliziert das umzusetzen, weil die Treiber von einer Reihe
von Helfer-Funktionen in der Haupt-Bibliothek abhängen. Das DJGPP
DXE-Format ist bei weitem nicht flexibel genug um das zu unterstützen,
und wir wollen Allegro nicht von anderen dynamischen Link-Paketen abhängig
machen.
Tja, wie es aussieht, müssen Sie die Größe des Umgebungsspeichers erhöhen :-)
Am einfachsten geht das in den DOS-Box Einstellungen (Klicken Sie auf das
Systemmenu und wählen "Eigenschaften"), oder in der config.sys Datei
(z.B. shell=c:\command.com /e:8192 /p).
Tja, wie es aussieht, müssen Sie die Größe des Umgebungsspeichers erhöhen :-)
Am einfachsten geht das in den DOS-Box Einstellungen (Klicken Sie auf das
Systemmenu und wählen "Eigenschaften"), oder in der config.sys Datei
(z.B. shell=c:\command.com /e:8192 /p).
Versichern Sie sich, dass sie kein Semikolon am Ende Ihrer MSVCDIR
Variable haben, falls sie MSVC verwenden, oder am Ende der MINGDIR
Variable im Fall von Mingw32, bzw. BCC32DIR bei BCC. Führen Sie
außerdem make -v auf der Kommandozeile aus und stellen Sie
sicher, dass es sich um GNU make und nicht um Borland make oder
Microsoft make handelt.
Sie müssen Ihrem Compiler sagen wie er die DirectX Include und
Bibliothek Dateien finden kann: Nehmen Sie die DirectX SDK
/include und /lib Verzeichnisse in den
Compiler/Linker Pfad auf. Alternativ, falls die Konfiguration nicht
veränderr werden soll, kann man auch die Dateien aus den DirectX SDK
/include und /lib Verzeichnissen in die
entsprechenden Verzeichnisse des Compilers kopieren.
Eine neuere Version des DirectX SDK wird benötigt, mindestens Version 5.
Sie ist auf der Microsoft Entwickler Seite erhältlich.
Falls Anti-Virus Software (z.B. Norton oder McAfee) im Hintergrund
läuft, versuchen Sie, diese kurzzeitig auszuschalten.
Setzen Sie END_OF_MAIN() an das Ende Ihrer
main() Funktion. Allegro benutzt
dieses Makro, um die normale main() Funktion mit etwas Präprozessor-Magie
in eine WinMain() Funktion im Windows-Stil umzuwandeln.
Versichern Sie sich, dass sie eine Windows GUI Applikation
erstellen, und nicht eine Konsole Applikation. Es gibt eine
entsprechende Einstellung in MSVC oder dem Borland C++ Builder. Beim
Borland C++ Kommandozeilencompiler ist es das -tW Flag,
beim MSVC-Linker ist es -subsystem:console. Eine andere
Möglichkeit besteht darin, das Präprozessorsymbol
ALLEGRO_USE_CONSOLE vor der Einbindung der Allegro-Includes
zu definieren, falls wirklich eine Konsole für das Programm benötigt
wird.
Falls Ihr Programm direkt Win32 API Header-Dateien einbindet, lesen
Sie das Kapitel "Windows specifics" in der Dokumentation.
Falls Ihr Programm lediglich Headers der C++ Standardbibliothek
einbindet, kompilieren Sie vermutlich mit gcc 3.x von Mingw32; falls
das der Fall ist, definieren Sie das Symbol __GTHREAD_HIDE_WIN32API
als Kompileroption:
g++ -D__GTHREAD_HIDE_WIN32API program.cpp -lalleg
Schalten Sie bitte "direct updating" für den DirectX Fenster-Treiber
aus, indem sie die entsprechende Konfigurationsvariable verwenden.
Die Sektion "Konfigurationsroutinen" in der Dokumentation enthält
Informationen über das Format, sowie die allegro.cfg Template-Datei.
Schalten Sie bitte "direct updating" für den DirectX Fenster-Treiber
aus, indem sie die entsprechende Konfigurationsvariable verwenden.
Die Sektion "Konfigurationsroutinen" in der Dokumentation enthält
Informationen über das Format, sowie die allegro.cfg Template-Datei.
Der Grabber muss mit dem Code in datedit.c gelinkt werden. Aber es sollte
gar nicht notwendig sein, sich darüber Gedanken zu machen:
make sollte alles automatisch erstellen.
Eine neuere Version der GNU Binutils wird benötigt. Lesen Sie
readme.txt um herauszufinden, was die mindestens benötigte Version ist.
Nicht solange <x-beliebig> nicht in readme.txt als eine der
unterstützten Plattformen erwähnt wird. Sie können versuchen, Allegro zu
portieren, aber das ist meinst ziemlich viel Arbeit. Sollte
<x-beliebig> ein 16-Bit Compiler wie der alte Borland C sein, vergessen
Sie die Idee ganz einfach :-)
WIP steht für "work in progress" (in Arbeit), und bezieht sich auf
Veränderungen gegenüber der letzten offiziellen Version. WIP Versionen
der Bibliothek können von der Allegro Homepage bezogen werden
(http://alleg.sourceforge.net/), und sind für
gewöhnlich sehr stabil, aber nicht so lange getestet wie End-Versionen.
Um einen Patch anzuwenden, wird das patch Programm benötigt. Für DJGPP
sollte es vom selben Ort als die anderen Pakete erhältlich sein - es ist
ein Standard Tool des Compilers. Gleichermaßen ist eine Version für
Mingw erhältlich: http://sourceforge.net/projects/gnuwin32/.
Falls Sie das Programm haben, es aber nicht funktioniert, überprüfen Sie,
ob Sie den Patch über eine unmodifizierte Allegro-Kopie der
vorletzten WIP-Ausgabe installieren (Überprüfen Sie die Text-Datei
die mit jeder WIP Ausgabe kommt, um sicher zu sein).
Diese Datei ist für die WIP Versionen separat erhältlich. Sie ist hier:
http://alleg.sourceforge.net/wip.html. (alldata.zip)
Das ist ganz einfach die Weise in der die Video-Hardware funktioniert:
Es kann zu einem Zeitpunkt immer nur eine Palette aktiv sein. Entweder
wandle alle Bilder um, so dass sie die selbe Palette verwenden, oder
benutze einen Truecolor Graphikmodus.
Auf der Allegro.cc Homepage (http://www.allegro.cc/) sollten
entsprechende Tools zu finden sein, z.B. Fixpal oder Smacker.
Die VGA-Hardware benutzt nur 6 Bits pro Farb-Komponente, was bedeutet das
die Rot-, Grün- und Blauanteile in der Palette-Struktur nur Werte zwischen
0 und 63, und nicht zwischen 0 und 255 annehmen können. Das bedeutet das
2^18 = 262144 verschiedene Farben möglich sind, bzw. 64 Graustufen. Mit
der VESA-Funktion 0x40F8 ist es zwar möglich einen 8 Bit breiten DAC
einzustellen, aber Allegro unterstützt das nicht direkt, und ich bin mir
nicht sicher wie kompatibel das auf verschiedener Hardware laufen würde.
Im 256 Farben Modus benutzt die VGA-Hardware Index #0 für den Rand.
(In Truocolor-Modi schwarz). Der bunte Rand kann vermieden werden indem
man in der Palette Index #0 auf schwarz setzt.
Nur schwer :-) Es gibt keinen so einfachen Trick wie einfach die Palette
ändern, deshalb muss das Bild wiederholt neu gezeichnet werden. (heller
oder dunkler) Man könnte auch wiederholt halb transparente Rechtecke
über den Bildschirm zeichnen, oder draw_lit_sprite() verwenden, aber
eine Warnung: Diese Operationen sind sehr CPU intensiv und benötigen
einen schnellen PC.
Werden Sie außerdem einen Blick auf http://www.allegro.cc/
für Add-On-Pakete (insbesondere FBlend v0.5), die versuchen, solche
Operationen zu beschleunigen.
fade_in() und fade_out() funktionieren nur in 8-Bit Palette Modi.
Siehe vorherige Frage für Einzelheiten.
Auf der Allegro.cc Homepage (http://allegro.cc/) gibt es
einige Tools, wie z.B. DTA und Smacker. Sie könnten außerdem ASE
(Allegro Sprite Editor, http://ase.sourceforge.net/), der
das Zeichnen/Verändern von einzelnen Frames einer Animation erlaubt,
und im FLU Format speichert. Oder Sie verwenden den GIMP
(http://www.gimp.org/) zusammen mit dem GFli-Plugin,
wodurch Ebenen für die einzelnen Frames verwendet werden könne, und
das ganze dann als file.fli gespeichert werden kann. Der GIMP
erlaubt es auch, existierende FLI-Dateien zu editieren.
Starte dein Zeichenprogramm, und stelle in der RGB Farbauswahl Rot und
Blau auf das Maximum (normalerweise 255, aber das hängt von den
verwendeten Einheiten ab), und Grün auf das Minimum. Das Ergebnis sollte
ein spezieller Farbton "Magic Pink" sein, oder wie es manche nennen,
Magenta.
Denken Sie daran, dass die Vertex Positionen (in der Fixed Point
Version) im Fixed Point Format angegeben werden. Man kann sie mit
dem itofix() Makro konvertieren, oder die Koordinaten
um 16 Bit nach links shiften.
Denken Sie daran, dass der Rotationswinkel im Fixed-Point-Format
angegeben wird, und man deshalb das itofix() Makro
verwenden muss, oder die Koordinaten 16 Bits nach links shiften.
z.B. rotate_sprite(bmp, spr, x, y, itofix(32)) rotiert
den Sprite um 45 Grad.
Sie versuchen vermutlich, die Dialog-Struktur mit einem Pointer auf ein
Bitmap zu initialisieren, richtig? Das geht nicht, weil der Dialog zur
Übersetzungszeit des Compilers erzeugt wird, das Bitmap aber erst zur
Laufzeit geladen wird und der Compiler deshalb noch nicht weiß, wo es sein
wird. Fügen Sie einen NULL-Pointer in die Dialog-Struktur ein, und kopiere den
wirklichen Bitmap-Pointer als Teil des Programminitialisierungscodes in
das dp-Feld, nachdem das Bitmap in den Speicher geladen wurde.
Das hänge davon ab, was genau Sie tun wollen. Wenn die Bilder
komplett gefüllt sind, gibt es keinen Vorteil für RLE-Sprites, und
es ist wahrscheinlich schneller, ein reguläres Bitmap mit der
blit()-Funktion zu verwenden. Falls die Grafik viele
transparente Bereiche enthält, kann ein RLE-Sprite kleiner und
schneller als draw_sprite() sein - je nach verwendetem
Bitmap und CPU.
Kompilierte Sprites sind normalerweise um einiges schneller als beide
anderen Methoden für maskierte Sprites, und geringfügig schneller für
deckende Graphiken, aber das ist sehr unterschiedlich. Sie sind am
nützlichsten für kleine Sprites, auf alten Maschinen, und im Mode-X.
Für SVGA-Modes auf einem Pentium kann es leicht sein, dass
blit() schneller ist (die Größe der kompilierten Sprites ist sehr schlecht
für die Cache-Performance).
Sie müssen sicherstellen, dass die Update-Rate der Game-Logik konstant ist.
Screen-Refreshes müssen dazu auf zu langsamen Computern übersprungen
werden, damit sie nicht zurückfallen. Das kann mit Hilfe eines Timers
implementiert werden, der eine globale Variable gemäß der Logik-Rate
erhöht. z.B.
volatile int speed_counter = 0;
void increment_speed_counter()
{
speed_counter++;
}
END_OF_FUNCTION(increment_speed_counter)
void play_the_game()
{
LOCK_VARIABLE(speed_counter);
LOCK_FUNCTION(increment_speed_counter);
install_int_ex(increment_speed_counter, BPS_TO_TIMER(60));
while (!game_over) {
while (speed_counter > 0) {
update_game_logic();
speed_counter--;
}
update_display();
}
}
Mit save_bitmap(). Lesen Sie die
save_bitmap() Dokumentation, sie beschreibt
einen oft gemachten Fehler, und hat auch Beispielcode.
Rufen Sie srand(time(NULL)) am Programmstart auf, und
benutzen Sie dann rand()%limit um eine
Pseudo-Zufallszahl zwischen 0 und limit-1 zu erhalten.
Das ist nicht notwendig. Der Linker sollte nur die benötigten Teile
der Bibliothek einbeziehen, wenn also z.B. keine, sagen wir,
Texture-Mapping oder FLIC Funktionen aufgerufen werden, werden sie auch
nicht in die ausführbare Datei aufgenommen. Das funktioniert nicht
perfekt, weil ein großer Teil von Allegro mit Listen von Funktionszeigern
arbeitet, wodurch ein Großteil der Grafik-Funktionen in die ausführbare
Datei mitaufgenommen wird - aber ich dabei versucht, das auf ein Minimum
zu begrenzen. Siehe allegro.txt für genauere Informationen wie man Teile
der Graphik- und Soundtreiber entfernen kann.
Nein. Diese Art von Hardware-Unterstützung wäre nützlich als Teil eines
3D-API, was Allegro nicht ist, und nie sein wird. Falls Sie sich in dieser
Richtung betätigen wollen, wäre meiner Meinung nach die MESA Bibliothek
(eine OpenGL-Implementation) ein guter Ausgangspunkt.
Falls Sie daran interessiert sind, OpenGL Grafik zu verwenden, und
Allegro für alles andere, versuchen sie es mit den verschiedenen
Add-On Bibliotheken auf http://www.allegro.cc/, speziell
AllegroGL.
Es gibt bereits eine Reihe sehr guter Tools dafür, z.B. JGMOD oder
DUMB. Die Audio-Sektion aud Allegro.cc enthält entsprechende Links
(http://allegro.cc/). Wir erlauben es nicht,
vorzuschlagen, eine dieser Bibliotheken in Allegro zu
integrieren, denn dieses Thema wurde bereits auf der Allegro
Mailing-Liste zu Tode diskutiert - und wir sind es leid.
Es gibt bereits einige Netzwerk-Pakete, die sich in Entwicklung
befinden oder im Internet erhältlich sind, und unserer Meinung nach ist
diese Art Code ohnehin besser als Addon-Bibliothek geeignet, anstatt
direkt in Allegro integriert.
Unisys hat ein Patent auf den LZW Kompressions-Algorithmus, der im GIF
Format verwendet wird. Wir möchten, dass alles in Allegro frei benutzbar
bleibt, ohne irgendwelche Einschränkungen, und das bedeutet dass kein
Code integriert werden kann, der einer Lizenz oder Gebühren unterliegt.
Es ist nicht auszuschließen. Versuchen Sie, das kleinste Codefragment zu
isolieren, mit dem das Problem reproduziert werden kann, und wir
werden es uns ansehen. Wenn Sie uns ein 10 Zeilen Programm senden,
werden wir das Problem beheben. 100 Zeilen, und wir werden es vielleicht
schaffen. 1000 Zeilen, und wir haben keine Chance :-)
Sicher. Lesen Sie die Giftware Lizenz in readme.txt. Es ist
und egal, was Sie damit machen, und es gibt keine Probleme mit einem kommerziellen
Einsatz.
Wann immer es fertig ist! Eine kleine Ermunterung ist immer willkommen,
aber wir haben keine fixen Termine, und wir werde keine für Sie machen :-)
Sobald es fertig ist, wird es herauskommen.
Der Grabber kann direkt aus GRX oder Bios .fnt-Dateien importieren, oder
man man kann sie mit einem beliebigen Zeichenprogramm in ein .pcx Bild
zeichnen. Auf http://www.talula.demon.co.uk/ttf2pcx/ gibt es ein
Utility, das Windows TrueType-Fonts in dieses .pcx Format konvertiert.
Auf die Allegro Homepage
(http://alleg.sourceforge.net/) sind einige Links. Man
kann Gravis Patches (.pat Format) benutzen, oder SoundFont 2.0 (.sf2)
Dateien, aber letztere müssen erst mit dem pat2dat Utility in eine
patches.dat Datei konvertiert werden.
Sie benötigen das makertf Utility
(http://www.giffer.com/public/win/pwflemgt/Files/MKRTF104.ZIP)
bzw. den Windows Help Compiler
(ftp://ftp.microsoft.com/Softlib/MSLFILES/HC505.EXE).
Erstellen Sie eine temporäres Verzeichnis, kopiere die
allegro.txi Datei aus dem allegro/docs Verzeichnis,
und führe die folgenden Kommandos aus:
makertf --no-warn allegro.txi -o allegro.rtf -J allegro.hpj gefolgt von
hcp allegro.hpj. Letzteres wird einige Fehlenmeldungen ausgeben, aber
die können ganz einfach ignoriert werden.
Die allegro.rtf Datei kann von Microsoft Word gelesen und von dort
gedruckt werden, aber man sollte zuvor die Index-Felder mit einem
Rechts-Klick aktualisieren. Man kann auch ein TeX Paket installieren
und mit den tex und dvi Programmen allegro.txi in das Postscript Format
umwandeln.
Schauen Sie auf der Allegro-Homepage nach:
http://alleg.sourceforge.net/.
Wenn Sie noch irgendetwas wissen, was man hinzufügen könnte, senden Sie
bitte die URL!
Es vereinfacht die Wartung des Programms (Falls der Wert von PI je
geändert werden müsste). Es macht das Programm u.U. auch portierbarer.
Eine Reihe von Graphikkarten haben fehlerhafte oder unvollständige VESA
Implementierungen, und oft ist die vsync() Funktion nicht implementiert.
Für Beispiele, wie man flimmerfreie Animationen darstellt, lohnt sich ein
Blick auf das Demo-Spiel, das verschiedene Methoden verwendet.
Wenn der Code ohne Optimierunge läuft, dann könnte es ein Compiler-Fehler
sein. Sie könnten versuchen den Compiler zum Nachgeben zu zwingen, z.B:
while (!key[KEY_ENTER])
yield_timeslice();
In diesem speziellen Fall wäre as aber ohnehin besser
readkey() zu verwenden.
Überlegen Sie auch, den Compiler up- oder downzugraden.
Hier: http://alleg.sourceforge.net/maillist.html.