NetVision-Technik

NetVision-Technik (http://www.netvision-technik.de/forum/index.php)
-   C / C++ (http://www.netvision-technik.de/forum/forumdisplay.php?f=59)
-   -   Moor und Nebel (http://www.netvision-technik.de/forum/showthread.php?t=2827)

Solstice 27.10.2008 17:33

Moor und Nebel
 
Liste der Anh?nge anzeigen (Anzahl: 2)
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:
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

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


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.

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