• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Gra Snake, wąż nie zbiera owoców

0 głosów
366 wizyt
pytanie zadane 2 października 2016 w C i C++ przez yogobella Początkujący (290 p.)

Wąż nie zbiera owoców, kiedy najeżdżam na literkę "F" nic się nie dzieje, gdzie jest błąd?

#include <iostream>
#include <conio.h>
#include <Windows.h>
using namespace std;

bool gameOver;
const int width = 20;
const int height = 20;
int x, y, fruitX, fruitY, score;
enum eDirection{ STOP = 0, LEFT, RIGHT, UP, DOWN};
eDirection dir;

void Setup(){
	gameOver = false;
	dir = STOP;
	x = width / 2;
	y = height / 2;
	fruitX = rand() % width;
	fruitY = rand() % height;
	score = 0;
}

void Draw(){
	system("cls");

	cout<<"Your score is: "<<score<<endl;

	for (int i = 0; i < width+2; i++)
		cout << "#";
	cout << endl;

	for(int i = 0; i < height; i++){
		for (int j = 0; j < width; j++){
			if(j == 0)
				cout << "#";
			if (i == y && j == x){
				cout << "O";
			}
			else if (i == fruitX && j == fruitY)
				cout << "F";
			else
				cout << " ";

			if(j == width - 1)
				cout << "#";
		}
		cout << endl;
	}

	for (int i = 0; i < width+2; i++)
		cout << "#";
	cout << endl;

	
}

void Input(){
	if (_kbhit()){
		switch (_getch())
		{
			case 'a':
				dir = LEFT;
				break;
			case 'd':
				dir = RIGHT;
				break;
			case 'w':
				dir = UP;
				break;
			case 's':
				dir = DOWN;
				break;
			case 'x':
				gameOver = true;
				break;
		}
	}
}

void Logic(){
	switch (dir){
		case LEFT:
			x--;
			break;
		case RIGHT:
			x++;
			break;
		case UP:
			y--;
			break;
		case DOWN:
			y++;
			break;
		default:
			break;
	}

	if (x > width || x < 0 || y > height || y < 0)
		gameOver = true;
	if (x == fruitX && y == fruitY){
		score += 10;
		fruitX = rand() % width;
		fruitY = rand() % height;
	}
}


int main(){
		Setup();
		while(!gameOver){
			Draw();
			Input();
			Logic();
		}

	return 0;
}

 

1 odpowiedź

+1 głos
odpowiedź 2 października 2016 przez jeremus Maniak (59,720 p.)
wybrane 31 grudnia 2016 przez yogobella
 
Najlepsza
wygląda na to że współrzędne x, y są odwrotnie niż fruitX i fruitY

taki warunek zadziała

if (y == fruitX && x == fruitY)

Podobne pytania

0 głosów
1 odpowiedź 848 wizyt
0 głosów
1 odpowiedź 319 wizyt
pytanie zadane 5 grudnia 2016 w C i C++ przez varespol Użytkownik (710 p.)
+1 głos
1 odpowiedź 1,582 wizyt

93,605 zapytań

142,530 odpowiedzi

322,999 komentarzy

63,095 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Kursy INF.02 i INF.03
...