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;
}