Kezdőoldal » Számítástechnika » Programozás » Miért rajzolódik ki ilyen...

Miért rajzolódik ki ilyen lassan a fegyver? C++

Figyelt kérdés

# include <iostream>

# include <stdlib.h>


typedef unsigned short ushort;


using std::cout;

using std::cin;

using std::endl;


int main()

{

for(ushort x = 0; x < 6; x++)

{

for(ushort y = 0; y < 77; y++)

{

if((x==0 && y > 1 && y < 6) || (x == 1 && y <= 77) || (x == 2 && y <= 32) || (x == 2 && y >= 56) || (x == 3 && y > 1 && y < 6) || (x == 3 && y >= 32 && y <= 42) || (x == 3 && y >= 47 && y <= 50) || (x == 3 && y == 55) || (x == 3 && y >= 64) || (x == 4 && y == 43) || (x == 4 && y == 46) || (x == 4 && y >= 52 && y <= 54) || (x == 4 && y >= 70) || (x == 5 && y >= 44 && y <= 45))

{

system("color 0F");

cout <<"o";

}

else

{cout <<" ";}

}

cout << endl;

}



cin.get();

return 0;

}


2011. nov. 29. 07:25
 1/7 A kérdező kommentje:

Code Block-ot használok.

És amint lefuttatom nem egyből a fegyver jelenik meg hanem lassan kirajzolódik,de csak akkor ha megváltoztatom a system el a betű színét.

Miért lesz ettől ilyen lassú a megjelenítés?

2011. nov. 29. 07:28
 2/7 anonim ***** válasza:
Szerintem lassú a system(color) hívás. Ne hívd meg minden karakter előtt, egyszer hívd meg az elején.
2011. nov. 29. 09:46
Hasznos számodra ez a válasz?
 3/7 anonim ***** válasza:

Eléggé hardcore megjelenítés...

A sokmillió if helyett hasnzálhatnál konstans 2D-s tömböt, amibe raszteresen letárolod a képet 0-kal és 1-ekkel, majd ezen mész végig két ciklussal...

2011. nov. 29. 11:18
Hasznos számodra ez a válasz?
 4/7 _Jessy_ ***** válasza:

Azt hiszem ez ennek a megoldása:

http://www.gyakorikerdesek.hu/szamitastechnika__programozas_..

Ezért (a feladat miatt) lett ilyen hardcore-os :)

2011. nov. 29. 11:56
Hasznos számodra ez a válasz?
 5/7 _Jessy_ ***** válasza:
Ja persze ettől függetlenül működne a 2D-s tárolás, és úgy is megoldható egy cout << "o", és egy cout << " " -al, de nem hiszem, hogy az elágazás feltétele miatt lassú, inkább az előbb leírt system("color 0F") hívás miatt, szerintem az ~0.1+ sec idő, és minden karakter kiírása előtt végrehajtódik, ezért lassú.
2011. nov. 29. 11:59
Hasznos számodra ez a válasz?
 6/7 A kérdező kommentje:

Igazatok volt a system color a main függvény legelső sorába tettem így már jó.

Egyébként még nem tartok a tömböknél a tanulásban de már nagyon kiv... vagyok hogy mi lehet az.

2011. nov. 29. 17:18
 7/7 anonim ***** válasza:

jópofa alternatív megoldásként akkor egy tömörített verzió:

van egy darab int vektorod, amibe az írás-nemírás karakterek hosszát tárolod szekvenciálisan és sorfolytonosan. Mindig mikor új elemhez érsz a tömbbe megváltoztatod a "ceruza" állapotát és kiírsz annyi darab karaktert, ami a szám értéke, majd megfordítod a ceruza "értékét". Tehát ha eddig írt, akkor a vektor következő értékénél annyi "üres" karaktert írsz, amennyi az értéke.


Ja és ne feledd mindig 80 karakterig kiegészíteni a sorokat. tehát ez alapján az első két sor valahogy így néz ki:

164,5,73,57,1,19,3...


a 164 az első két sor üreset jelenti karakterrel a harmadik sor elején, majd az 5 karakterrel kirajzolod a tetejét, majd 73 karakter újabb semmi. az 53 karakter már a negyedik sor második karakterétől indul és az utána lévő 1 a kis lyukat jelzi, majd 19 karakterrel az azutánit rajzolod ki és vőgül újabb 3 karakter szünet (1 karakter az tus lekerekítése miatt, kettő a fegyver új sorának elején lévő hely miatt).

És így kb 32 int szám megadásával tömörítetten kirajzoltad a fegyvert és ez garantáltan k-gyors.

2011. nov. 30. 09:11
Hasznos számodra ez a válasz?

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, 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!