Gra typu snake - trudności z uruchomieniem

0

Dzień dobry, nie będę owijał w bawełnę, problem jest mam wrażenie prosty ale upierdliwy- otóż mam napisany program, w Visualu btw, i gdy podsyłam plik .exe z folderu Debug znajomym wyskakują im błędy typu "nie znaleziono MSVCP140D.dll". Słyszałem od przyjaciela, że problem da się rozwiązać dodając jakąś bibliotekę i zmieniając coś w funkcji tr (kod zamieszczę poniżej), niestety nie jest w stanie podać mi szczegółów. Jeżeli znalazłaby się tutaj jakaś dobra duszyczka bardzo prosiłbym o pomoc i z góry wielkie dzięki, pozdrawiam :)

// Snake podejscie pierwsze 21.11.cpp : Defines the entry point for the console application.
//

#include "stdafx.h"
#include <iostream>
#include <conio.h>
#include <time.h>
#include <windows.h>
#include <conio.h>
#include <cstdlib>

using namespace std;

void idzdoxy(int x, int y)
{
	HANDLE hCon;
	COORD dwPos;

	dwPos.X = x;
	dwPos.Y = y;

	hCon = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleCursorPosition(hCon, dwPos);
}

char *tr(char *str)
{
	static char buff[256];
	char cp[] = "\245\206\251\210\344\242\230\276\253\244\217\250\235\343\340\227\275\215ąćęłńóśżźĄĆĘŁŃÓŚŻŹ";
	if (strlen(str) >= sizeof(buff)) return str;
	char *bf = buff;
	while (*str)
	{
		char *pos = strchr(cp + 18, *str);
		*(bf++) = pos ? *(pos - 18) : *str;
		++str;
	}
	*bf = 0;
	return buff;
}


int main()
{
	int szer, wys, dl = 0, speed, gracdalej;
	int gora, dol, lewo, prawo;
	char pole[50][50];
	int hX[10000]; int hY[10000]; int ruchy = 0;
	int Xw, Yw, Xj, Yj;
	int klawisz, punkty=0,wybor;
	char zwrot = 'p';

	srand(time(NULL));
	HANDLE hOut;
	hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);

	cout << "Witam w programie Snake autorstwa Daniela Kalety" << endl;																//intro
	Sleep(1000);
	cout << tr("Na początek podaj szerokość planszy, na której chcesz zagrać (od 5 do 35): ");										//szerokosc
	cin >> szer;
	while (szer < 5 || szer>35)
	{
		SetConsoleTextAttribute(hOut, FOREGROUND_RED);
		cout << tr("Niestety Twoja liczba nie znajduje się w przedziale, sprobój jeszcze raz: ");
		cin >> szer;
		SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);
	} 

	cout << tr("Teraz podaj wysokość tej planszy (od 5 do 35): ");																	//wysokosc
	cin >> wys;
	while (wys < 5 || wys>35)
	{
		SetConsoleTextAttribute(hOut, FOREGROUND_RED);
		cout << tr("Niestety Twoja liczba nie znajduje się w przedziale, sprobój jeszcze raz: ");
		cin >> wys;
		SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);
	} 

	cout << tr("A więc zadeklarowana przez Ciebie plansza będzie miała wymiary: ")<< szer << " x " << wys << endl;					//wypisanie wymiarow planszy

	cout << tr("Podaj tempo gry w jakim życzysz sobie zagrać od 1 do 50: ");
	cin >> speed;
	while (speed < 1 || speed>50)
	{
		SetConsoleTextAttribute(hOut, FOREGROUND_RED);
		cout << tr("Niestety Twoja liczba nie znajduje się w przedziale, sprobój jeszcze raz: ");
		cin >> speed;
		SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);
	}
	cout << tr("Czy chcesz, aby uderzenie o ściane powodowało koniec gry? Wpisz 0- nie, 1-tak: ");
		cin >> wybor; 
	while (wybor <0 || wybor>1)
	{
		SetConsoleTextAttribute(hOut, FOREGROUND_RED);
		cout << tr("Niestety Twoja liczba nie znajduje się w przedziale, sprobój jeszcze raz: ");
		cin >> wybor;
		SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);
	}

	cout << "Na koniec zadeklaruj przyciski sterowania" << endl;																//deklaracja sterowania

	cout << tr("Góra: ")<<endl;
	gora = _getch();
	if (gora == 224)gora += _getch();
	if (gora == 0)gora -= _getch();

	cout << tr("Dół: ") << endl;
	dol = _getch();
	if (dol == 224)dol += _getch();
	if (dol == 0)dol -= _getch();

	cout << tr("Lewo: ") << endl;
	lewo = _getch();
	if (lewo == 224)lewo += _getch();
	if (lewo == 0)lewo -= _getch();

	cout << tr("Prawo: ") << endl;
	prawo = _getch();
	if (prawo == 224)prawo += _getch();
	if (prawo == 0)prawo -= _getch();

	Sleep(2000);																													
	system("cls");																													//zakonczenie procesu konfiguracji



	

	do
	{

	
		for (int i = 0; i < wys; i++)
		{
			for (int j = 0; j < szer; j++)
			{
				pole[j][i] = 0;																											//wypelnianie tablicy zerami
			}
		}

		do {
			Xj = rand() % szer;																											//pozycja poczatkowa jedzenia			
			Yj = rand() % wys;
		} while (pole[Xj][Yj] != 0);

		pole[Xj][Yj] = 2;

		if (wybor == 0)
		{
			Xw = rand() % szer;																												//pozycja poczatkowa dla 0		
			Yw = rand() % wys;
		} 
		else 
		{
			Xw = 1;
			Yw = 1;
		}
		pole[Xw][Yw] = 1;





		idzdoxy(0, 0);		
																																			//rysowanie planszy
		SetConsoleTextAttribute(hOut, FOREGROUND_RED);
		for (int i = 0; i <= szer + 1; i++)					//gorna ramka																
			cout << (char)178 << (char)178;


		for (int i = 0; i < wys; i++)
		{
			cout << endl << (char)178 << (char)178;			//prawa ramka
			for (int j = 0; j < szer; j++)
			{
				if (pole[j][i] == 0)
				{
					cout << "  ";				//wypelniacz pola
				}
				if (pole[j][i] == 1)
				{
					SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);
					cout << (char)219 << (char)219;  //waz
				}
				
				if (pole[j][i] == 2)
				{
					SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_RED);
					cout << (char)123 << (char)125;  //jedzenie
				}
			}
			SetConsoleTextAttribute(hOut, FOREGROUND_RED);
			cout << (char)178 << (char)178;					//lewa ramka
		}

		cout << endl;

		for (int i = 0; i <= szer + 1; i++)																								//koniec rysowania planszy
			cout << (char)178 << (char)178;



		

			for (;;)																														//GRA !!!!
			{
				ruchy++;
				hX[ruchy] = Xw;
				hY[ruchy] = Yw;



				Sleep(1000 / (speed+(dl/2)));																								//predkosc
				if (wybor == 1)
					punkty++;

				if (_kbhit())
				{
					klawisz = _getch();
					if (klawisz == 224)klawisz += _getch();
					if (klawisz == 0) klawisz -= _getch();

					if (klawisz == gora && zwrot != 'd') zwrot = 'g';																				//deklaracja poruszania
					if (klawisz == dol && zwrot != 'g') zwrot = 'd';
					if (klawisz == lewo && zwrot != 'p') zwrot = 'l';
					if (klawisz == prawo && zwrot != 'l') zwrot = 'p';
				}



				if (zwrot == 'l') Xw--;																											//ruch weza
				if (zwrot == 'p') Xw++;
				if (zwrot == 'g') Yw--;
				if (zwrot == 'd') Yw++;




				if (wybor == 0)
				{
					if (Xw == szer) Xw = 0;																										//brak kolizji na scianach
					if (Xw == -1) Xw = szer - 1;
					if (Yw == wys) Yw = 0;
					if (Yw == -1) Yw = wys - 1;
				}

				if (wybor == 1)																													//kolizja na scianach
				{
					{
						if (Xw == szer || Xw == -1)
							break;
						if (Yw == wys || Yw == -1)
							break;
					}
				}





				if (pole[Xw][Yw] == 1)																											//jedzenie samego siebie
				{
					break;
				}





				if (pole[Xw][Yw] == 2)																											//jedzenie jedzenia :D
				{
					punkty = punkty + (2 * speed);
					dl++;
					do {
						Xj = rand() % szer;																										//pozycja nowego jedzenia			
						Yj = rand() % wys;
					} while (pole[Xj][Yj] != 0);

					pole[Xj][Yj] = 2;
					idzdoxy(Xj * 2 + 2, Yj + 1);
					SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_RED);
					cout << (char)123 << (char)125;
					SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);
				}
				else
				{
					if (ruchy > 0) pole[hX[ruchy - dl]][hY[ruchy - dl]] = 0;																	//usuwanie ogona
					idzdoxy(hX[ruchy - dl] * 2 + 2, hY[ruchy - dl] + 1);
					cout << "  ";
				}

				pole[Xw][Yw] = 1;
				idzdoxy(Xw * 2 + 2, Yw + 1);
				SetConsoleTextAttribute(hOut, FOREGROUND_GREEN);
				cout << (char)219 << (char)219;

				idzdoxy(0, wys + 1);
				SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);
				cout << endl << "Punkty: " << punkty;
				SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_INTENSITY);


			}

			SetConsoleTextAttribute(hOut, FOREGROUND_GREEN | FOREGROUND_BLUE | FOREGROUND_RED | FOREGROUND_INTENSITY);
			cout << endl << "Koniec gry, zdobyte punkty: " << punkty;
			cout << endl << tr("Czy chcesz zagrać jeszcze raz na tych samych ustawieniach? 0- nie, 1-tak: ");
			cin >> gracdalej;
				while (gracdalej < 0 || gracdalej>1)
				{
					cout << tr("Niestety nie ma takiej opcji, sprobój jeszcze raz: ");
					cin >> gracdalej;
				}
				if (gracdalej == 1)
				{
					system("cls");
					punkty = 0;
					dl = 0;
			}


		} while (gracdalej == 1);

		cout << "No to do widzenia!";
		Sleep(1500);
	
    return 0;
}


 
0

A próbowałeś dodać do folderu z .exe plik MSVCP140D.dll?

1 użytkowników online, w tym zalogowanych: 0, gości: 1