Mi a hiba ebben a kódban -- C++ --?
Egy egyszerű labdapattogás lenne, egyszerű mozgással egy 4 oldallal határolt táblán. Tudom a végtelen ciklus nem egy elegáns megoldás, de anélkül is ugyanaz volt az eredmény: nem lehet látni a labdát(@), hanem helyette csak a háttért(-). Szinte biztos vagyok, hogy megint valami nagy butaságot csináltam, és csupán pont nem veszem észre :/ ...
Bocs, hogy így ide másolom a szöveget, de a pastebint valamiért a gyk nem engedi (linkrövödítőnek tartja).
#include <iostream>
#include <cstdlib>
using namespace std;
#define MAX_1 30
#define MAX_2 50
struct ball // A labda.
{
int x , y;
};
void move_left(bool up , int * p_x , int * p_y) // Mozgás balra.
{
if(up)
{
*p_x--;
*p_y--;
}
else
{
*p_x--;
*p_y++;
}
}
void move_right(bool up , int * p_x , int * p_y) // Mozhás jobbra.
{
if(up)
{
*p_x++;
*p_y--;
}
else
{
*p_x++;
*p_y++;
}
}
int main()
{
// A tábla és a labda ledekralárása.
char board[MAX_1][MAX_2];
ball labda;
bool up = false , left = false , enough;
// Kezdő koordináták:
labda.x = 1;
labda.y = 15;
int counter = 0 , c = 1;
// Tömb feltöltése '-' jellel:
for(int i=0;i<MAX_1;i++)
{
for(int i=0;i<MAX_2;i++)
board[counter][MAX_2] = '-';
counter++;
}
// Főciklus kezdete: /////////////////////////////////////////////////
while(true)
{
if(up) {up = false; c++;}
else if(!up) {up = true; c++;}
do////////////////////////////////**************
{
counter = 0;
board[labda.y][labda.x] = '-';
if(left) move_left(up, &labda.x , &labda.y);
else if(!left) move_right(up,&labda.x,&labda.y);
board[labda.y][labda.x] = '@';
for(int i=0;i<MAX_1;i++) // Tábla kirajzolása.
{
for(int i=0;i<MAX_2;i++)
cout << board[counter][MAX_2];
counter++;
cout << endl;
}
system("cls");
}while(labda.x < MAX_2 || labda.y < MAX_1 || labda.x > 0 || labda.y > 0);////////////////////////////////**************
if(c%2!=0) // Mindig a következő oldalhoz pattanásnál változtat irányt.
{
if(left) left = false;
else if (!left) left = true;
}
}
// Főciklus vége! /////////////////////////////////////////////////
return 0;
}
Most kezdem átnézni, de ezt sürgősen gondold újra kezdve a tábla felöltésétől az if használatáig.
Ezen
for(int i=0;i<MAX_1;i++)
{
for(int i=0;i<MAX_2;i++)
board[counter][MAX_2] = '-';
counter++;
}
nem tudtam , hogy sírjak vagy nevessek.
Azt hiszem együtt tudok érezni...észrevettem a hibát :P
for(int i=0;i<MAX_1-1;i++)
{
for(int i=0;i<MAX_2-1;i++)
board[counter][i] = '-';
counter++;
}
Már van labdám...a baj, csak hogy még nem mozdul.
Sikerült !!!!!!!!!!!!!!!!!!!!!!!!! :) :) :) :) :)
Köszönöm azért a segítséget, mert így legalább jobban figyelmes lettem a kóddal szemben!
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!