0% au considerat acest document util (0 voturi)
4 vizualizări6 pagini

Snake C++

Documentul conține codul sursă pentru un joc simplu de șarpe scris în C. Jocul permite utilizatorului să controleze un șarpe care se mișcă pe un ecran, mâncând fructe pentru a-și crește lungimea, și se termină atunci când șarpele se lovește de pereți sau de el însuși. Codul include funcții pentru desenarea jocului, gestionarea input-ului și logica jocului.

Încărcat de

-
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
4 vizualizări6 pagini

Snake C++

Documentul conține codul sursă pentru un joc simplu de șarpe scris în C. Jocul permite utilizatorului să controleze un șarpe care se mișcă pe un ecran, mâncând fructe pentru a-și crește lungimea, și se termină atunci când șarpele se lovește de pereți sau de el însuși. Codul include funcții pentru desenarea jocului, gestionarea input-ului și logica jocului.

Încărcat de

-
Drepturi de autor
© All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Snake-joc

#include <stdio.h>

#include <stdlib.h>

#include <conio.h>

#include <windows.h>

// Dimensiuni joc

#define WIDTH 30

#define HEIGHT 20

// Direcțiile posibile ale șarpelui

#define UP 1

#define DOWN 2

#define LEFT 3

#define RIGHT 4

// Structura pentru a stoca coordonatele

typedef struct {

int x;

int y;

} Position;

Position snake[100]; // Vector pentru a stoca pozițiile șarpelui

int length = 1; // Lungimea șarpelui

Position fruit; // Poziția fructului


int direction = RIGHT; // Direcția inițială

int gameover = 0; // Flag pentru terminarea jocului

// Functii pentru desenarea jocului

void draw() {

system("cls"); // Șterge ecranul

// Desenează pereții jocului

for (int i = 0; i < WIDTH + 2; i++) {

printf("#");

printf("\n");

// Desenează jocul

for (int i = 0; i < HEIGHT; i++) {

for (int j = 0; j < WIDTH; j++) {

if (j == 0) {

printf("#"); // Coloană stânga

} else if (j == WIDTH - 1) {

printf("#"); // Coloană dreapta

} else if (i == snake[0].y && j == snake[0].x) {

printf("O"); // Capul șarpelui

} else if (i == fruit.y && j == fruit.x) {

printf("F"); // Fructul

} else {

int print = 0;
for (int k = 1; k < length; k++) {

if (snake[k].x == j && snake[k].y == i) {

printf("o"); // Corpul șarpelui

print = 1;

break;

if (!print) {

printf(" "); // Spațiu gol

printf("\n");

// Desenează baza jocului

for (int i = 0; i < WIDTH + 2; i++) {

printf("#");

printf("\n");

// Functia pentru a mișca șarpele

void input() {

if (_kbhit()) {

switch (_getch()) {
case 'w':

if (direction != DOWN) direction = UP;

break;

case 's':

if (direction != UP) direction = DOWN;

break;

case 'a':

if (direction != RIGHT) direction = LEFT;

break;

case 'd':

if (direction != LEFT) direction = RIGHT;

break;

case 'x':

gameover = 1;

break;

// Functia care mișcă șarpele

void logic() {

Position prevHead = snake[0];

Position prev2Head;

snake[0].x = snake[0].x + (direction == RIGHT) - (direction == LEFT);

snake[0].y = snake[0].y + (direction == DOWN) - (direction == UP);


// Mișcă corpul șarpelui

for (int i = 1; i < length; i++) {

prev2Head = snake[i];

snake[i] = prevHead;

prevHead = prev2Head;

// Dacă șarpele a mâncat fructul

if (snake[0].x == fruit.x && snake[0].y == fruit.y) {

length++; // Crește lungimea șarpelui

fruit.x = rand() % WIDTH;

fruit.y = rand() % HEIGHT;

// Verifică coliziunea cu pereții

if (snake[0].x <= 0 || snake[0].x >= WIDTH - 1 || snake[0].y <= 0 || snake[0].y >= HEIGHT - 1)
{

gameover = 1;

// Verifică coliziunea cu corpul șarpelui

for (int i = 1; i < length; i++) {

if (snake[i].x == snake[0].x && snake[i].y == snake[0].y) {

gameover = 1;

}
}

int main() {

srand(time(0));

snake[0].x = WIDTH / 2;

snake[0].y = HEIGHT / 2;

// Plasăm fructul

fruit.x = rand() % WIDTH;

fruit.y = rand() % HEIGHT;

// Jocul propriu-zis

while (!gameover) {

draw();

input();

logic();

Sleep(100); // Controlează viteza jocului

printf("Game Over!\n");

return 0;

S-ar putea să vă placă și