#include <windows.h>
#include <iostream>
#include <math.h>
#define PI 3.14159265
using namespace std;
WORD kolor=0x00f0;
HANDLE uchwyt;
bool wilka=true, wilkb=true, szczela=false, wyszczelil=false, tia;
int pociski=100, stala=100, startowa=5, xpoc, ypoc;
double kont=25, pred=45, czas, kontdwa, xpocdwa, ypocdwa;
void kol(int k)
{
HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleTextAttribute(handle, k);
}
void gotoxy(int x, int y)
{
COORD c;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
void wybieraj()
{
char dec, startodwa, kontdwa, preddwa;
cout<<"Wciśnij odpowiednio klawisz 1, 2, 3 lub 4 aby:\n";
cout<<"1 - Zmienić kąt rzutu\n";
cout<<"2 - Zmienić prędkość(siłę) rzutu\n";
cout<<"3 - Zmienić swoją pozycję\n";
cout<<"4 - Strzelić\n";
cin>>dec;cout<<"\n";
switch (dec)
{
case '1': cout<<"Wciśnij \42+\42 lub \42-\42 aby odpowiednio zwiekszyć lub zmniejszyć kąt.\n"; tia=false;
while(tia==false){cin>>kontdwa;
if(kontdwa=='+'){kont=kont+1;tia=true;};
if(kontdwa=='-'){kont=kont-1;tia=true;};}break;
case '2': cout<<"Wciśnij \42+\42 lub \42-\42 aby odpowiednio zwiekszyć lub zmniejszyć prędkość.\n"; tia=false;
while(tia==false){cin>>preddwa;
if(preddwa=='+'){pred=pred+1;tia=true;};
if(preddwa=='-'){pred=pred-1;tia=true;};} break;
case '3': cout<<"Gdzie chcesz się przesunąć? Zakres ruchu to liczby całkowite od 0 do 9.\n"; startowa=-1;
while(startowa<0){cin>>startodwa;
if(startodwa=='0'){startowa=1;} if(startodwa=='1'){startowa=3;} if(startodwa=='2'){startowa=5;} if(startodwa=='3'){startowa=7;}
if(startodwa=='4'){startowa=9;}if(startodwa=='5'){startowa=11;}
if(startodwa=='6'){startowa=13;}
if(startodwa=='7'){startowa=15;}
if(startodwa=='8'){startowa=17;}
if(startodwa=='9'){startowa=19;}
} break;
case '4': cout<<"OGNIA!\n"; czas=0; pociski--; szczela=true; Sleep(500); break;
default: gotoxy(1,41); cout<<"Źle podałeś użyszkodniku! Pozwól, że spytam ponownie:\n"; wybieraj(); break;
}
}
void wyswietl()
{
if(wilka==true){gotoxy(62,24);cout<<"|\\/|"; gotoxy(62,25);cout<<"|oo|"; gotoxy(62,26);cout<<"; ;"; gotoxy(63,27);cout<<"\42\42";}
else{gotoxy(62,24);cout<<" _=_"; gotoxy(62,25);cout<<"' '"; gotoxy(62,26);cout<<"|RIP|"; gotoxy(62,27);cout<<"|___|";}
if(wilkb==true){gotoxy(74,24);cout<<"|\\/|"; gotoxy(74,25);cout<<"|oo|"; gotoxy(74,26);cout<<"; ;"; gotoxy(75,27);cout<<"\42\42";}
else{gotoxy(74,24);cout<<" _=_"; gotoxy(74,25);cout<<"' '"; gotoxy(74,26);cout<<"|RIP|"; gotoxy(74,27);cout<<"|___|";}
if(szczela==true){gotoxy(startowa,25);cout<<" \2_\100";gotoxy(startowa,26);cout<<"/|'";gotoxy(startowa,27);cout<<"\256^\257";szczela=false;wyszczelil=true;}
else{if(wyszczelil==true)
{gotoxy(startowa,25);cout<<" \2/";gotoxy(startowa,26);cout<<"/|";gotoxy(startowa,27);cout<<"\256^\257";
kontdwa=kont*PI/180; czas=czas+0.1;
xpocdwa=stala*(pred*cos(kontdwa)*czas)+startowa+4; ypocdwa=-(stala*((sin(kontdwa)*pred*czas)-(5*czas*czas)))+20;
xpoc=round(xpocdwa); ypoc=round(ypocdwa);
gotoxy(xpoc,ypoc); cout<<"\370";
if(wilka==true&&xpoc>61&&xpoc<66&&ypoc>23&&ypoc<27){gotoxy(1,50);cout<<"T R A F I E N I E ! ! !"; kol(4); gotoxy(xpoc-1,25); cout<<"\\\363/"; kol(15); wilka=false; wyszczelil=false;}
else
{if(wilkb==true&&xpoc<78&&xpoc>73&&ypoc<27&&ypoc>23){gotoxy(1,50);cout<<"T R A F I E N I E ! ! !"; kol(4); gotoxy(xpoc-1,25); cout<<"\\\363/"; kol(15); wilkb=false;
wyszczelil=false;}
else{if(xpoc<1||ypoc<1||xpoc>80||ypoc>71||(ypoc==25&&(xpoc==57||xpoc==58||xpoc==59))||(ypoc==26&&(xpoc==56||xpoc==57||xpoc==58||xpoc==59))||(ypoc==27&&(xpoc<24||xpoc>53))||ypoc>27)
{gotoxy(1,50);cout<<"P U D Ł O ! ! !"; wyszczelil=false; if(xpoc>25&&xpoc<53&&ypoc>26){kol(9); gotoxy(xpoc-2,27); cout<<">\\\363/<"; gotoxy(xpoc,28); cout<<"\364"; kol(15);}}
}}}
else{gotoxy(startowa,25);cout<<" \2";gotoxy(startowa,26);cout<<"/|!~o";gotoxy(startowa,27);cout<<"\256^\257";}}
}
void plansza()
{
cout<<"\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n";kol(6);
cout<<" ,^.\n";
cout<<" /\260\261|\n";
cout<<"_______________________ ,'\260\261\262\260\\____________________";
cout<<"\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\262\261\260`-";kol(9);cout<<"~~~~~~~~~~~~~~~~~~~~~~~~~~~";kol(6);
cout<<";\260\261\262\333\333\262\261\262\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333";
cout<<"\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\262\261\260\260\\";kol(9);
cout<<"\260\261\262\333\333\333\333\333\333\333\333\262\261\262\333\333\333\333\333\333\262\261\261\260\260";kol(6);
cout<<"/\260\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333";
cout<<"\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\262\261\261\260`.";kol(9);
cout<<"\261\262\333\333\333\333\333\262\261\260";kol(6);cout<<"_";kol(9);cout<<"\260\261\262\333\262\261\261\260";kol(6);
cout<<"_,^'\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333";
cout<<"\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\262\262\261\260|";kol(9);
cout<<"\260\261\262\262\262\262\261\260\260";kol(6);cout<<"/\260|";kol(9);cout<<"\260\261\262\260";kol(6);
cout<<"_,'\260\260\261\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333";
cout<<"\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\262\261\260\\____,'^|\260\261\260\\__/\260\260\262\262\333\333\333\333\333";
cout<<"\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333";
cout<<"\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\262\261\261\262\262\262\262\261\262\262\262\262\262\262\262\262\262\262";
cout<<"\262\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\333\n";kol(15);
cout<<"Zostało pocisków: "<<pociski<<"\n";
cout<<"Kąt rzutu: "<<kont<<"\n";
cout<<"Prędkość rzutu: "<<pred<<"\n\n\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365";
cout<<"\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365\365";
gotoxy(1,27); cout<<"g";
}
int main()
{
HANDLE okno = GetStdHandle(STD_OUTPUT_HANDLE);
COORD size;
size.X = 80;
size.Y = 71;
SetConsoleScreenBufferSize(okno, size);
HANDLE thisProgram;
SMALL_RECT DisplayArea = {0,0,0,0};
thisProgram = GetStdHandle(STD_OUTPUT_HANDLE);
DisplayArea.Bottom = 70;
DisplayArea.Right = 79;
SetConsoleWindowInfo(thisProgram, TRUE, &DisplayArea);
kol(15);
uchwyt=GetStdHandle(STD_OUTPUT_HANDLE);
while(wilka==true||wilkb==true){system("cls"); plansza(); wyswietl(); if(wyszczelil==true){Sleep(500);}else{gotoxy(1,41); wybieraj();}}
system("cls");
cout<<"W I L K I - K A P U T T !!!";
system("pause");
return 0;
}
Oto program który napisałem. W założeniu miał być cześcią większej gry tekstowej. Pisałem go osobno, żeby łatwiej było go debuggować przed połączeniem z pozostałą cześcią gry.
I tu pojawia się mój problem: po wystrzeleniu pocisku, pojawia sie on u stóp "awatara" i wyskakuje napis "pudło" niezależnie od podanych przeze mnie parametrów lotu takich jak predkosc, kąt, stała itp.
Niestety nie potrafię znaleźć gdzie popełniłem błąd.
Ciągle jeszcze uczę się c++ i stąd moja prośba do forumowiczów: pomóżcie mi naprawić mój mały program:)