Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- // Projekt A.cpp : Defines the entry point for the console application.
- //
- #include "stdafx.h"
- #include "windows.h"
- #include "stdio.h"
- #include "time.h"
- /* Funkcja tworzaca pulapke */
- void createtrap (char map [80][25]) // funkcja tworzaca sciane
- {
- int x = rand() % 80 + 1; // losowanie pozycji x
- int y = rand() % 23 + 3; // losowanie pozycji y
- if (map[x][y] == 'V') // sprawdzanie czy wylosowane wspolrzedne zawieraja V
- {
- map[x][y] = 'P'; // wyswietlanie symbolu pulapki na wylosowanych wczesniej wspolrzednych
- }
- else // jezeli wspolrzedne nie zawieraja V
- {
- createtrap(map); // ponownie wywoluje funkcje tworzaca sciany
- }
- }
- void createtreasure (char map [80][25]) // funkcja tworzaca skarb
- {
- int x = rand() % 80 + 1; // losowanie pozycji x
- int y = rand() % 23 + 3; // losowanie pozycji y
- if (map[x][y] == 'V') // sprawdzanie czy wylosowane wspolrzedne zawieraja V
- {
- map[x][y] = 'S'; // wyswietlanie symbolu skarbu na wylosowanych wczesniej wspolrzednych
- }
- else // jezeli wspolrzedne nie zawieraja V
- {
- createtreasure(map); // ponownie wywoluje funkcje tworzaca skarb
- }
- }
- void createwall (char map [80][25])
- {
- if (rand() % 2 == 0)
- {
- int length = rand()% 10 + 2;
- int x = rand() % (80 - length);
- int y = rand() % 25;
- int endx = x + length;
- while(x <= endx && map[x][y] == 'V')
- {
- if (map[x][y] == 'V' || map[x][y] == '#')
- {
- map[x][y] = '#';
- x++;
- }
- else
- {
- createwall(map);
- }
- }
- }
- else
- {
- int height = rand() % 10 + 2;
- int x = rand() % 80;
- int y = rand() % (25 - height);
- int endy = y + height;
- while(y <= endy)
- {
- if (map[x][y] == 'V' || map[x][y] == '#')
- {
- map[x][y] = '#';
- y++;
- }
- else
- {
- createwall(map);
- }
- }
- }
- }
- int main(int argc, char* argv[])
- {
- initConsole();
- int key=0;
- while (key!=VK_ESCAPE) // Wykonuje petle gdy nie jest wcisniety Escape
- {
- int posX = 40;
- int posY = 12;
- int cheat = 0;
- int wallnum = 0;
- int treasurenum = 0;
- int snaketail = 0;
- char map [80][25];
- for (int x=0; x < 80; x++)
- {
- for (int y=0; y < 25; y++)
- {
- map [x][y] = 'V';
- }
- }
- char snakeX [64];
- char snakeY [64];
- srand ( time(NULL) );
- createtreasure(map);
- createtrap(map);
- do
- {
- clearScreen();
- if(map[posX][posY] == 'P')
- {
- clearScreen();
- printf("Kontynuowac? : T / N\n");
- char command;
- scanf("%c",&command);
- if(command == 't')
- {
- break; // Przerywa wykonywanie petli i wraca na poczatek programu
- }
- else if(command == 'n')
- {
- return 0;
- }
- }
- else
- {
- /* Wyswietlanie nfo */
- printf ("Marek Kustusz 131555"); // Wyswietlanie imienia, nazwiska i numeru indeksu
- printf (" Wynik: %d", treasurenum); // Wyswietlanie wyniku
- printf (" Cheat Mode: %d", cheat);
- /* Obramowanie poziome */
- for (int i=0; i<81; i++)
- {
- gotoXY(0+i,1);
- write('#');
- gotoXY(0+i,25);
- write('#');
- }
- /* Obramowanie pionowe */
- for (int i=1; i<24; i++)
- {
- gotoXY(0,1+i);
- write('#');
- gotoXY(80,1+i);
- write('#');
- }
- gotoXY(posX,posY);
- for(int i=0; i<1; i++)
- write('x');
- for (int x=0; x < 80; x++)
- {
- for (int y=0; y < 25; y++)
- {
- if (map [x][y] == '#')
- {
- gotoXY(x,y+1);
- write('#');
- }
- else if (map [x][y] == 'S')
- {
- gotoXY(x,y+1);
- write('S');
- }
- else if (map[x][y] == 'P' && cheat==1)
- {
- gotoXY(x,y);
- write('.');
- }
- else if (map[x][y] == 'P')
- {
- if (((abs(posX-x) == 1) || (abs(posX-x) == 0)) && ((abs(posY-y) == 1) || (abs(posY-y) == 0)))
- {
- gotoXY(x,y);
- write('P');
- }
- }
- }
- }
- if (map[posX][posY-1] == 'S') // Sprawdzenie czy pozycja gracza jest rowna pozycji skarbu
- {
- map[posX][posY-1] = 'V';
- createtreasure(map); // Ponowne wywolanie funkcji tworzacej skarb
- treasurenum++; // Dodawanie punktow po zebraniu skarbu
- snaketail++;
- }
- for (int i = 0; i < snaketail; i++)
- {
- gotoXY(snakeX[i], snakeY[i]);
- write('H');
- }
- }
- key = getVKey(); // obsluga klawiszy
- switch (key)
- {
- case VK_LEFT : for(int i = snaketail; i > 0; i--)
- {
- snakeX[i] = snakeX[i-1];
- snakeY[i] = snakeY[i - 1];
- }
- snakeX[0] = posX;
- snakeY[0] = posY;
- for (int i=0; i<=snaketail; i++)
- {
- if (snakeX[i] != posX)
- {
- posX--;
- if (posX==0)
- posX = 1;
- else if (map[posX][posY-1] == '#')
- posX++;
- else if (snakeX[posX] == 'H')
- posX++;
- break;
- }
- }
- break;
- case VK_RIGHT : for(int i = snaketail; i > 0; i--)
- {
- snakeX[i] = snakeX[i-1];
- snakeY[i] = snakeY[i - 1];
- }
- snakeX[0] = posX;
- snakeY[0] = posY;
- for (int i=0; i<=snaketail; i++)
- {
- if (snakeX[i] != posX)
- {
- posX++;
- if (posX==80)
- posX = 79;
- else if (map[posX][posY-1] == '#')
- posX--;
- break;
- }
- }
- case VK_UP : for(int i = snaketail; i > 0; i--)
- {
- snakeX[i] = snakeX[i-1];
- snakeY[i] = snakeY[i - 1];
- }
- snakeX[0] = posX;
- snakeY[0] = posY;
- for (int i=0; i<=snaketail; i++)
- {
- if (snakeY[i] != posY)
- {
- posY--;
- if (posY==1)
- posY = 2;
- else if (map[posX][posY-1] == '#')
- posY++;
- break;
- }
- }
- case VK_DOWN : for(int i = snaketail; i > 0; i--)
- {
- snakeX[i] = snakeX[i-1];
- snakeY[i] = snakeY[i - 1];
- }
- snakeX[0] = posX;
- snakeY[0] = posY;
- for (int i=0; i<=snaketail; i++)
- {
- if (snakeY[i] != posY)
- {
- posY++;
- if (posY==25)
- posY = 24;
- else if (map[posX][posY-1] == '#')
- posY--;
- break;
- }
- }
- case 0x50 : if (cheat==0)
- cheat=cheat+1;
- else
- cheat=cheat-1;
- break;
- case 0x53 : wallnum = wallnum++;
- if (wallnum <= 20)
- {
- createwall(map);
- }
- break;
- }
- }
- while (key!=VK_ESCAPE); // escape wylacza program
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement