Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Figura w C++


Rekomendowane odpowiedzi

Opublikowano

Witam, mam problem, ponieważ figura, którą rysuje program ma się poruszać za pomocą strzałek i zaczynać musi się w prawym górnym rogu konsoli. Wszystko jest ok, ale jak przesuwam w lewo, to figura wychodzi trochę poza konsolę. Co jest nie tak?

 

 

#include <iostream>

#include <conio.h>
#include <windows.h>
#include <string>
using namespace std;
 
void gotoxy(int x,int y);
void HideCursor();
bool Check(int x, int y, int skala);
 
 
int main()
{
HideCursor();
int x,y,x1,y1,skala;
char klawisz, znak;
x=67;
y=5;
cout << "Wybierz rozmiar:" << endl;
cin >> skala;
 
 
cout << "Wybierz znak:" << endl;
znak = getch();
cout << "Twoj znak to:" << znak << endl;
 
 
 
//rysujemy
do
{
system("cls");
x1=x;
y1=y;
 
gotoxy(x1,y1);
 
for (int i = 1; i<=skala*3; i++)
{
gotoxy(x1,y1);
cout << znak;
y1++;
x1;
}
 
for(int i = 1; i<=skala*3; i++)
{
gotoxy(x1,y1);
y1--;
x1;
}
 
for (int i = 1; i<=skala-2; i++)
        {
            gotoxy(x1,y1);
                cout << znak;
                y1++;
                x1--;
        }
        
    for (int i = 1; i<=skala-2; i++)
        {
        gotoxy(x1,y1);
        cout << znak;
        y1--;
        x1--;
}
 
 
for(int i = 1; i<=skala*3; i++)
{
gotoxy(x1,y1);
cout << znak;
y1++;
x1;
}
 
 
 
//KLAWISZE
 
klawisz = getch();
 
 
        switch (klawisz) 
        {
 
 
        case '+':{ skala++; if(Check(x,y,skala))    break; else {skala--;    break;}}  // powiekszenie
        case '-':{ skala--; if(skala>=3)            break; else {skala++;    break;}} // pomniejszenie
        case 75: { x--;     if(x>=0)                break; else {x++;        break;}} // przesuniecie w lewo
        case 77: { x++;     if(Check(x,y,skala))    break; else {x--;        break;}}// przesuniecie w prawo
        case 72: { y--;     if(y>=5)                break; else {y++;        break;}} // przesuniecie do gory
        case 80: { y++;     if(Check(x,y,skala))    break; else {y--;        break;}}// przesuniecie w dol
        case 27:{ break;} // wyjscie
        }
}
while(klawisz != 27);
 
return 0;
}
 
void gotoxy(int x,int y)
{
    COORD c;
    c.X=x;
    c.Y=y;
    SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE),c);
}
//----------------------------------------------------------------------------
void HideCursor()
{
    ::HANDLE hConsoleOut = ::GetStdHandle( STD_OUTPUT_HANDLE );
    ::CONSOLE_CURSOR_INFO hCCI;
    ::GetConsoleCursorInfo( hConsoleOut, &hCCI );
    hCCI.bVisible = FALSE;
    ::SetConsoleCursorInfo( hConsoleOut, &hCCI );
}
 
bool Check(int x,int y,int skala) 
{
    if ( x+3*skala<=79 && y+2*skala-3<=24) return true;
        else return false;
}

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...