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