Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon matze79 » So 9. Feb 2014, 19:37

Hi,

ich programmier grade mal wieder ein bisschen,
nun wartet getchar ja immer auf einen Tastendruck, weiss jemand wie ich da einen Timeout reinbringe ?
Momentan geht das Programm naemlich nur weiter, wenn der Benutzer auch den Charakter/Vehicle bewegt.

Code: Alles auswählen
ch=getchar():
switch(ch){
case 'd':
 y++;
 break;
case 'a':
 y--;
 break;
case... und so weiter
}


char.jpg
char.jpg (26.78 KiB) 3000-mal betrachtet


Das @ Zeichen ist momentan der Charakter/Fahrzeug.
Hab mir noch keine Gedanken zum Spielinhalt gemacht.
Ich probiere momentan einfach rum.

Gruss Matze
Zuletzt geändert von matze79 am Mo 10. Feb 2014, 20:21, insgesamt 2-mal geändert.
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: C/C++ Timeout fuer getchar

Beitragvon matze79 » Mo 10. Feb 2014, 11:58

Fuer getch funktionierts so:

Code: Alles auswählen
noecho();         // don't show keypress
cbreak();         // don't interrupt for user input
timeout(500);  // wait 500ms for keypress


Jetzt muss ich noch rausfinden wie"s mit getchar geht.
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, das ein oder andere Probl

Beitragvon matze79 » Mo 10. Feb 2014, 20:18

char.jpg
char.jpg (37.96 KiB) 2971-mal betrachtet


So heute bisschen erweitert, ein Array wird mit Zufallszahlen gefuellt, dies enthaelt Koordinaten fuer die A Baueme :)
Die Baume werden dann mit For Schleifen gezeichnet und pdcurses move und printw.
Kollision fuer die Baueme fehlt noch.

Ausserdem hab ich alles so eingerichtet das verschiedene Terminalgroessen unterstuetzt werden, wie man am kleineren Fenster sieht.

Ich nutze nun ein paar Globale Variablen/Arrays und hab das Programm in mehre Dateien ausgelagert functions.c fuer Funktionen, Hauptprogramm move_a_char.c, globals.h fuer Globale Variablen und so weiter.
Mein erster Versuch mit mehren Dateien.
Gnu Make wollte ich neben bei auch gleich mal lernen.

Momentan lauefts unter Windows, Linux und MS-Dos (ab 386er, DJGPP).

Hab nach wie vor ein Problem, irgendwie muss man doch mehre Tastendruecke gleichzeitig auswerden koennen ?
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon wobo » Mo 10. Feb 2014, 21:29

matze79 hat geschrieben:Hi,

ich programmier grade mal wieder ein bisschen,
nun wartet getchar ja immer auf einen Tastendruck, weiss jemand wie ich da einen Timeout reinbringe ?
Momentan geht das Programm naemlich nur weiter, wenn der Benutzer auch den Charakter/Vehicle bewegt.
[...]

Mit kbHit() ?
Code: Alles auswählen
if (kbhit())
{
ch=getchar():
switch(ch)
   {
   case 'd':
    y++;
    break;
   case 'a':
    y--;
    break;
   case... und so weiter
   }
}


PS: Dein Game sieht cool aus. Ich habe sofort gesehen, dass die grünen A einen dichten finsteren und gefährlichen Nadelwald darstellen, durch das sich der Hero (klassisch als @, was schon bei NetHack anno 1985 so war) erst noch durch kämpfen muss. Musst also nix erklären, ist alles selbst erklärend :-) Will ich dann mal spielen, wenn's fertig ist ^^
wobo
DOS-Guru
 
Beiträge: 555
Registriert: So 17. Okt 2010, 13:40

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon matze79 » Di 11. Feb 2014, 16:15

http://www.file-upload.net/download-860 ... r.zip.html

Eine aktuell lauffaehige Version, jetzt mit hell und dunkelgruenen Bauemen und Kollision (nicht ganz perfekt..)
Komischerweise funktionierts nicht 100% wenn Baueme nebeneinander stehen.
Ich gleiche die Koordinaten der Baueme mit denen des Spielers ab mit einer Forschleife.
Trifft der Spieler einen Baum werden seine Koordinaten auf den alten Wert angepasst.
Muss noch rauskriegen wie ich einen gleichmaessigen Programmablauf hinkriege.
Eine Art Timing dass das Programm auf jeden Rechner gleich schnell laueft.
Momentan mache ich das noch mit getch und timeout.. das ist nicht wirklich das Wahre.

Muss mir ueberlegen wie ich Gegner gestalten kann. So das sie sich halbwegs vernuenftig verhalten.
Die Function fuer die Farben hab ich etwas ueberarbeitet, so das ich nun 2 Stufen habe Hell und Dunkel (A_BOLD in pdcurses)

kbhit mag nicht im Moment, schau mir das spaeter noch mal an.

PS: Umlaute gibts hier nicht, UK Tastatur.

Edit: Ein kleiner Bug hat sich eingeschlichen, es koennen rote Baueme auftauchen, ist nur ein Tipp Fehler im Zufallsteil der entscheidet ob ein Baum hell oder Dunkel ist.
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon wobo » Sa 15. Mär 2014, 14:31

Ich hab´s gerade ausgestestet: Stimmt manchmal klappt die Kollisisionsabfrage mit den Bäumen noch nicht - vielleicht ist das aber auch ein Feature und Hero kann auf Bäume klettern?

Gegner bitte auch noch machen. Und Falltüren und Schatztruhen. Und Burgen.

Die Dos-Version ließ sich nicht per ESC abbrechen, die Win32-Version dagegen schon.

Wann geht´s weiter ;-) ?
wobo
DOS-Guru
 
Beiträge: 555
Registriert: So 17. Okt 2010, 13:40

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon matze79 » Di 18. Mär 2014, 19:16

Download: main.exe

Nur win32 im Moment, da ich etwas Zeitmangel habe :) muss nochmals djgpp einrichten und bin noch nicht dazugekommen.
Immerhin hab ich jetzt schon mal einen Gegner, der nichts kann, collisionsabfrage ist etwas verbessert.
Lebensbalken wird bei Gegner Kontakt reduziert.

Anfaengerversuche :) in QuickBasic waere ich wohl schon weiter und haette bereits Sprites.

Gruss Matze
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon matze79 » So 23. Mär 2014, 11:42

So hab mein Thinkpad fertig mit djpgg,

hier mal der neueste Screenshot:
hero.jpg
hero.jpg (51.01 KiB) 2823-mal betrachtet


Das @ ist der Player, das E der Feind.
Der kann nichts, und ist nur bei Beruehrung schaedlich.

Und download der Dos Version:
hero.zip

Beenden mit 'Q, Steuerung: W A S D
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon Brueggi » Mo 30. Jun 2014, 11:39

Ich habe mich nun entschlossen, auch mal erste Schritte in C zu wagen. Du bist ziemlich weit im vergleich zu mir - mann, was hab ich gestern gegrübelt, wie man Zeichenketten ausgibt... Dauernd Fehler... :-D
Dateianhänge
SOURCE.JPG
Mein erstes C-Programm am Mac :-D
SOURCE.JPG (39.58 KiB) 2658-mal betrachtet
Brueggi
 

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon matze79 » Mo 30. Jun 2014, 16:36

Kein 68k ASM ? :)

Ich poste demnaechst mal den Source von dem was ich bisher habe.
Ich will wenn ich Lust hab alles neuschreiben, da einiges etwas umstaendlich geworden ist.
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon Brueggi » Di 1. Jul 2014, 09:25

Erstmal C lernen. :-D
Habe schon probiert mit

asm
{
}

auch Assembler zu schreiben. Zumindest hat er es anstandslos kompiliert. Wäre schön, wenn du deine "Lektionen", die Du lernen musstest, hier mal zu veröffentlichen. Das ist absolutes Neuland :-D
Brueggi
 

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon matze79 » Di 1. Jul 2014, 11:26

Es ist allerdings nicht der beste Source, Viel Spass.
Am sinnvollsten ist im Moment ein kompletter Rewrite :)

source.zip

Gruss Matze
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon matze79 » Di 8. Jul 2014, 13:44

Waere toll wenn ich auch etwas Feedback/Verbesserungsvorschlaege bekommen koennte :)
Natürlich haben wir nichts zu verbergen, dennoch machen wir auf dem Klo die Türe zu!
matze79
DOS-Gott
 
Beiträge: 7770
Registriert: So 9. Sep 2012, 19:48

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon darktrym » Di 8. Jul 2014, 15:16

Keine Ahnung was du hören willst, kenne nicht die Richtung wohin dein Programm gehen soll, deshalb etwas zum Code. Vielleicht als Inspiration, schau dir mal Apogee Kroz an(ist in TP geschrieben).

Kommentare meinerseits:
Makefile:
rm ist kein Windows Befehl, entweder machst du pro Architektur eine Makefile oder verwendet den dafür vorgesehen Befehl(make -f Makefile.win bzw. del)
Optimierungem sind wenn es kein besonderen Grund gibt nicht sinnvoll.
Explizite Auflisten der Objektdateien wird bei steigender Anzahl ungünstig, guck mal in Wikipedia vielleicht findest du was.

Formatierung(sicher viel kosmetischer Natur) und kleine Dinge:
Leerzeichen zwischen include und Bezeichner.
Einrückungen sind nicht konsistent.
Nur global sichtbares kommt in eckige Klammern, sonst in doppelte Hochkommas, einige Compiler werden sich sicher darüber beschweren.
Reduzier dein globales Wissen, wird ohnehin nicht gebraucht in dem Umfang.
enemy(): Ich bin sicher einige Fälle schließen sich gegenseitig aus, kein Grund das abermals zu überprüfen. Gilt auch für main().
enemy_position: Konstante Ausdrücke bitte auch als solche markieren wie "150".
Gibts einen besonderen Grund warum du da kein Prä-/Postinkrement verwendet hast? Generell ist Präinkrement vorzuziehen.
Wenn du später nochmals dran arbeiten willst könnten (Doxygen-)Kommentare nie schaden, wenigstens in den Header Dateien. Es ist guter Stil die Kommentare obenhalb des zu schreibenden Codes zu setzen, um nicht über die 79/80 Zeichen pro Zeile zu kommen. Eine Leerzeile am Ende jeder Datei.
Du kannst auch mal ein void als Funktionsargument nutzen, wenn's keine Parameter braucht und Variablen zum Schutz einer weiteren Inkludierung ist es geläufiger den Dateinamen in Großbuchstaben mit Unterstrich statt Komma zu versehen. Kann bei globals.h auch nicht schaden.
Wenn initcolor so ein Muster hat, kann man auch gleich eine Schleife nutzen und die Paare in den Header verlagern. Waldcollision ist kein dt. Wort, selbst als Neologismus mit Rechtschreibfehler.
Räum mal deine main() auf: Grafikinit., Spielinit. Gameloop. Deine Gameloop kann auch mit break verlassen werden, dann hats auch einen schönen Platz für Aufräumen und das exit() kann entfernt werden. Dein return 0 ist zwar sinnlos, schadet aber nicht, schöner schauts mit einem return EXIT_SUCCESS aus.

PS: Getestet auf Windows 7.
Benutzeravatar
darktrym
LAN Manager
 
Beiträge: 207
Registriert: So 5. Jan 2014, 10:59
Wohnort: -D-

Re: Spieleprojekt in C / PDCurses, Probleme?! (Logbuch)

Beitragvon DOSferatu » Mi 9. Jul 2014, 18:44

Ich habe schon einige Spiele programmiert - und mache so etwas auch immer noch.
Falls jemand z.B. Interesse hat, wie man mehrere Tasten gleichzeitig abfragen kann (und auch "komische" Tasten benutzen), könnte ich z.B. helfen. (Ich erwähne das, weil dies hier u.a. thematisiert wurde).

Mich freut es jedesmal, wenn ich sehe, daß es außer mir auch noch andere Leute gibt, sich sich privat mit Spieleprogrammierung beschäftigen.
DOSferatu
DOS-Übermensch
 
Beiträge: 1095
Registriert: Di 25. Sep 2007, 11:05

Nächste

Zurück zu Programmierung

Wer ist online?

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