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

Chase

Alter Hase

Beiträge: 753

Wohnort: Nagaoka / Darmstadt / Düsseldorf

Beruf: fauler Studi

  • Private Nachricht senden

11

09.11.2006, 00:08

Wow, das war ja ne Rekordzeit @babel. Ich glaube das war das erste Mal das ich meinen PC-Speaker in Aktion gehoert hab, es geht einfach nichts ueber dieses nostalgische Feeling :)
"Have you tried turning it off and on again?"

babelfish

Alter Hase

Beiträge: 1 222

Wohnort: Schweiz

Beruf: Informatiker

  • Private Nachricht senden

12

09.11.2006, 16:07

Naja, ich übertreibe gerne überall mit der Graphik ^^. Aber es gab hier nichts was wirklich viel Arbeit machte.
Ich hatte mal versucht eine Figur zu texten, aber das sah abstossend aus xD.

Sound abzuspielen ist eigentlich ganz leicht, einfach nur Beep(Frequenz, Dauer in msek); aufrufen. (benötigt windows.h)
Achso, hier sind die noten. Hatte sie irgendwann mal zusammengestellt ^^:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
//        Note          0.  1.  2.   3.   4.   5.   6.    7.

const int C[8]      = { 16, 32, 65,  130, 261, 523, 1046, 2093 };
const int Cis[8]    = { 17, 34, 69,  138, 277, 554, 1108, 2217 };
const int D[8]      = { 18, 36, 73,  146, 293, 587, 1174, 2349 };
const int Dis[8]    = { 19, 39, 77,  155, 311, 622, 1244, 2489 };
const int E[8]      = { 20, 41, 82,  164, 329, 659, 1328, 2637 };
const int F[8]      = { 21, 43, 87,  174, 349, 698, 1396, 2793 };
const int Fis[8]    = { 23, 46, 92,  185, 369, 739, 1479, 2959 };
const int G[8]      = { 24, 49, 98,  196, 392, 783, 1567, 3135 };
const int Gis[8]    = { 25, 51, 103, 207, 415, 830, 1661, 3322 };
const int A[8]      = { 27, 55, 110, 220, 440, 880, 1760, 3520 };
const int B[8]      = { 29, 58, 116, 233, 466, 923, 1864, 3729 };
const int H[8]      = { 30, 61, 123, 246, 493, 987, 1975, 3951 };

Bei Aufruf der Funktion bleibt das Spiel über die Dauer des Sounds stehen, wenn man kein lineares Spiel möchte sollte man also mit Threads arbeiten ;)

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

13

09.11.2006, 17:42

Das hast Du schön und wirklich schnell umgesetzt! :)
"Games are algorithmic entertainment."

14

10.11.2006, 21:54

hi :)

also ich habe mich für ein kleines 4-gewinnt entschieden ;)
habe schon ein bisschen gemacht, aber ich finde diesen einen Fehler nicht :?
vielleicht könnt ihr mir ja helfen :D

Ich habe ein Array Feld einer Struktur (oder wie man es auch nennen mag^^)

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
struct S_GameField
{
       bool bTaken; //besetzt, ja oder nein

       char chTaken; //besetzt mit Zeichen (O, X)

};

//In der Funktion

const int Hoehe = 6;
const int Breite = 7;

//Spielfeld erstellen

S_GameField Field[Hoehe][Breite];


Nun liegt mein Fehler in der Besrtzung der Felder beim Reinwerfen der Marken/Chips

Wenn unten das Feld bereits besetzt ist, muss ja das darüber besetzt werden.

Meine Abfrage ist nun so (Falls der unterste Platz schon besetzt ist):

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
//Münze rutscht runter

     for (int z=0; z<Hoehe; z++)
     {
         if (Field[z][Position].bTaken == true)
         {          
             Field[z-1][Position].bTaken = true;
             Field[z-1][Position].chTaken = 'O';
             
             //nächster Spieler ist dran

             if (VS == "PvP") {
              if (sSpieler == sSpieler1) { sSpieler = sSpieler2; }
              else if (sSpieler == sSpieler2) { sSpieler = sSpieler1; }
             }
             else if (VS == "PvC") {
              if (sSpieler == sSpieler1) { sSpieler = sComputer; }
              else if (sSpieler == sComputer) { sSpieler = sSpieler1; }
             }
         }
     }


//VS ist der SpielModus (Spieler gegen Spieler oder Spieler gegen Computer)
und die sSpieler strings sind dazu da, um auszugeben wer jetzt dran ist :)
Achja, und POSITION ist die Breite, wo ich die Münze/Marke reinwerfe.
Die Variable wird überprüft, sodass sie nur 0 - 6 sein kann.

Nun, das klappt alles ganz wunderbar, nur liegt irgentwo ein Fehler mit dem Array! Wenn man die exe startet und nun das Feld [0][6] besetzt
stürzt das programm ab.
Wenn ich alles mit VC 6++ compiliere (benutze Dev-C++) ist es immer ein anderes Feld das einen Absturz schafft O_o

Wer das Problem in der Testversion sehen will:
http://www.yourfileupload.com/file.php?f…0302d68840b3db0

//EDIT:
Mit der Taste Return ( <-- (über Enter) ) wirft man die Chips rein ^^

Vier Gewinnt:

(Link)
C++ für Spieleprogrammierer durch, zu Weihnachten ist 3D Spieleprogrammierung mit DirectX9 dran :D

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

15

10.11.2006, 22:46

Void, um das rauszifinden, musst Du Dir einfach vorstelen, *DU* seist der Debugger :). Passt ja zu Karneval, kannst Dich als Debugger verkleiden :lol:

Und Du gehst jetzt einfach im Kopf eine Anweisung nach der anderen durch.
Also, in der For-Schleife wird z erst mal auf 0 gesetzt. Positon setzt Du offensichtlich auf 6. Also fragt die if Abfrage ob 0,6 besetzt ist und das ist nach Deiner Vorgabe der Fall. Und dann.... ? ;)
"Games are algorithmic entertainment."

16

11.11.2006, 11:56

aah, danke Osram :D
dank dem Debugger Kostüm hab ichs gefunden ^^
wenn z = 0 ist, kann ich ja nicht auf z-1 zugreifen :D

C-/C++-Quelltext

1
 if (z == 0)  { z = 1; }
vor der Besetzung des Feldes hat den Fehler behoben :o
C++ für Spieleprogrammierer durch, zu Weihnachten ist 3D Spieleprogrammierung mit DirectX9 dran :D

Werbeanzeige