NetVision-Technik

Zur?ck   NetVision-Technik > Forum > Programmierung > C / C++

C / C++ Hier findet ihr Code-Schnipsel zu C & C++

 
 
Themen-Optionen Ansicht
Alt 27.10.2008, 17:33   #1
Moor und Nebel
Solstice Solstice ist offline 27.10.2008, 17:33

Hehe. Ich hab mein erstes echtes C/C++ Game geschrieben.
Es nennt sich Moor und Nebel.

Es geht darum den Weg durch ein ASCII Moor zu finden der irgenwo am rechten Rand endet, den man natürlich vor lauter Nebel nicht sieht... logisch wenn man danebendappt: ein Leben wech.

Bedient wird es mit dem Zocker "wasd"

dh:
nach oben: "w"
nach links: "a"
nach unten: "s"
nach rechts: "d"

Das Spiel kann man mit dem süßen kreuz oben in der rechten ecke des fensters schließen... wie so manche popups

Man kann es beliebig oft spielen und der Weg ist selbstverständlich jedes mal ein anderer XD.

man hat 8 Leben insgesamt jedes Game.

Also fürs erste find ich es echt gut, da man daren echt seinen Spass finden kann, insbesondere mit freunden kann man sich da zu tode lachen XD
(Schadenfreude )
so einfach und doch genial.

Leider hat es halt grafisch nur ASCII zu bieten.
Für Interressierte rück ich auch gern den Quelltext raus:
Code:
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <conio.h>

// QT by Solstice

int umgebung(int rd)
{
    int rdt;
rdt = rand()%2;
if (!(rdt==1))
rdt = -1;
rd = rd+rdt;
return rd;
}

int check(int x,int y, char see[8][9])
{
if (see[x][y] == 'G')
return 2;
if (see[x][y] == '#' || see[x][y] == '*')
return 1;
else
return 0;
}


void main()
{
int lives = 8;

// randomizer
srand(time(0L));
int rd;
int rdt;
int gord;
int x;
int y;
int getit;
int direct;
int ycu;
int cnt;
int cntrd;
char see[8][9];
int dirc;
int game=1;

int curx;
int cury;

while (1) // Das Endlosspiel
{
int got = 0;
while (got == 0)
{

x=0;
y=0;
cnt=0;
for (x=0;x<8;x++)
 for (y=0;y<8;y++)
  see[x][y] = '~';

gord = 1;
x=0;
y=0;
ycu=0;
rd=rand()%8;
see[rd][ycu] = '*';

curx=rd;   // Reihe
cury=ycu;  // Zeile



rdt = rd;
getit = 1;
while(getit)
{


cnt++;          /// Sicherung gegegen Endlosschleife
if (cnt > 70)
break;



direct = rand()%2;
if (direct==1)  // Links/Rechts
{
y = umgebung(ycu);

if (y<8 && y>=0)
{
if (y == 7)
{
see[rd][y]= 'G';
getit = 0;
}

dirc = y-ycu;
dirc = dirc*2+ycu;

if (see[rd][y] == '~' && see[rd][dirc] != '#' && see[rd][dirc] != '*' && see[rd-1][y] != '#' && see[rd+1][y]!='#' && see[rd-1][y] != '*' && see[rd-1][y] != '*')
{
ycu=y;
see[rd][y]= '#';
}
else
continue;


}
else
continue;

} // ende von direct
else                 // Hoch/Runter
{ // else von direct
rdt = umgebung(rd);

if (rdt<8 && rdt>=0)
{

dirc = rdt-rd;
dirc = dirc*2+rd;

if (see[rdt][ycu] == '~' && see[dirc][ycu] != '#' && see[dirc][ycu] != '*' && see[rdt][ycu+1] != '#' && see[rdt][ycu-1] != '#' && see[rdt][ycu-1] != '*' && see[rdt][ycu+1] != '*')
{
rd = rdt;
see[rdt][ycu] = '#'; 
}
else
continue;

} // ende gültigkeitsbereich.
else
continue;


}  // ende else von direct 


game=1;
} // While getit ende

for (cntrd=0;cntrd<8;cntrd++)
{
if (see[cntrd][7] == 'G')
got = 1;
}

}
/*
for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
printf ("%c",see[x][y]);
printf("\n"); 
}
printf("\n\n\n"); 
*/
// randomizer ende

int ch;
    int left;
    int right;
    int up;
    int down;
    int err;
char dir;

printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
if (see[x][y] != '*')
printf ("~");
else
printf ("*");

printf("\n"); 

}

while (game)
{
left = 0;
right = 0;
up = 0;
down = 0;
err = 1;
dir = 0;


//scanf ("%c", &dir);
dir = getch();

if (dir=='a' || dir=='A')
left = 1;
if (dir=='d' || dir=='D')
right = 1;
if (dir=='w' || dir=='W')
up = 1;
if (dir=='s' || dir=='S')
down = 1;


see[curx][cury] = '#';


if (left)
cury--;
if (right)
cury++;
if (up)
curx--;
if (down)
curx++;


ch = check(curx,cury,see);
see[curx][cury] = '*';

for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
if (see[x][y] == '*')
err = 0;
}
printf("\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n");

if (ch == 0 || err == 1)
{
lives--;
printf ("Ups, du bist danebengetreten, du verlierst ein Leben\nLeben: %d\n", lives);

see[curx][cury] = '~';
if (left)
cury++;
if (right)
cury--;
if (up)
curx++;
if (down)
curx--;
see[curx][cury] = '*';


if (lives == 0)
{
printf ("Du hast keine Leben mehr... Game Over\n");

for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
printf ("%c",see[x][y]);
printf("\n"); 
}


getch();
game=0;
continue;
}


printf("\n"); 
}

if (ch == 2)
{
printf ("Super, du hast es geschafft.\n Du hast gewonnen!!\n");

for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
printf ("%c",see[x][y]);
printf("\n"); 
}
getch();
game=0;
continue;
}


for (x=0;x<8;x++)
{
for (y=0;y<8;y++)
if (see[x][y] != '*')
printf ("~");
else
printf ("*");

printf("\n"); 

}
} // ende While schleife

lives = 8;
}
} // ende main
mfg,
Sol

Angeh?ngte Dateien
Dateityp: zip MoorSpiel.zip (33,2 KB, 22x aufgerufen)

__________________
Schmutziges Geschirr schimmelt nicht,
wenn man es einfriert


Ge?ndert von Solstice (02.11.2008 um 17:11 Uhr).

 
Benutzerbild von Solstice
Solstice
Moderator
Punkte: 71.264, Level: 100 Punkte: 71.264, Level: 100 Punkte: 71.264, Level: 100
Levelaufstieg: 0% Levelaufstieg: 0% Levelaufstieg: 0%
Aktivität: 0% Aktivität: 0% Aktivität: 0%
Letzte Erfolge
Auszeichnungen
Registriert seit: 10.04.2008
Alter: 35
Beitr?ge: 4.074
Abgegebene Danke: 200
Erhielt 1.331 Danke für 153 Beiträge
Downloads: 2
Uploads: 1
Nachrichten: 731
Hits: 10950
Mit Zitat antworten
Folgende 10 Benutzer sagen Danke zu Solstice für den nützlichen Beitrag:
$iMpLy (27.10.2008), Bluesteel (19.02.2009), Bulli (20.10.2009), Cerberus (27.10.2008), Dark-Destroyer (27.10.2008), djfreakmen (18.04.2009), gotthummer (27.10.2008), One12 (18.04.2009), P4N1C (18.04.2009), Thunder™ (29.03.2013)
 


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, G?ste: 1)
 

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beitr?ge zu antworten.
Es ist Ihnen nicht erlaubt, Anh?nge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beitr?ge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.

Gehe zu


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:52 Uhr.


Powered by vBulletin® Version 3.8.9 (Deutsch)
Copyright ©2000 - 2024, vBulletin Solutions, Inc.
Template-Modifikationen durch TMS