PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Moor und Nebel


Solstice
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 :confuse:

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 :confuse:)
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:
#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

Rasta
18.04.2009, 08:36
hehe das ist ja mal geil

P4N1C
18.04.2009, 10:12
Geht das nur mir so,
oder ist das Spiel verdammt schwer?



mfg panic

Rasta
18.04.2009, 10:15
jup also ich bekomm auch nur 3 hin un dann bin ich tot ^^

Solstice
19.04.2009, 01:45
Es ist verdammt schwer XD

Aber das ja der fun... wenns dein kollege nur einmal mehr schafft als du ist der ärger umso größer... XD

P4N1C
22.04.2009, 18:55
Das Spiel macht voll kaputt^^
Ich habs mittlerweile im Autostart drinne xDD
und ich muss sagen,
ich werde immer besser ;D

Mittlerweile gewinne ich 2/3 Spielen :D

mfg panic

rick
18.09.2009, 23:05
och wie öde von den ersten 5 spielen habe ich 4 gewonnen aber idee ist schon geilo xD

Solstice
18.09.2009, 23:15
Sei dir sicher... du hättest es sicher nicht 5 mal gespielt wenn du die ersten 4 mal verloren hättest... aber ich kann da gerne auch weniger leben reinproggen XD