Kezdőoldal » Számítástechnika » Programozás » Mi a hiba ebben a kódban --...

Mi a hiba ebben a kódban -- C++ --?

Figyelt kérdés

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;

}


2014. jan. 17. 22:01
 1/5 A kérdező kommentje:
Ha valaki válaszolna, annak igazán örülnék :/
2014. jan. 18. 12:11
 2/5 SimkoL ***** válasza:

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.

2014. jan. 18. 13:09
Hasznos számodra ez a válasz?
 3/5 A kérdező kommentje:

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.

2014. jan. 18. 13:26
 4/5 A kérdező kommentje:
* ...a baj csak az, hogy még nem mozdul.
2014. jan. 18. 13:28
 5/5 A kérdező kommentje:

Sikerült !!!!!!!!!!!!!!!!!!!!!!!!! :) :) :) :) :)


Köszönöm azért a segítséget, mert így legalább jobban figyelmes lettem a kóddal szemben!

2014. jan. 18. 15:00

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

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!