- Az iPhone a mobilpiac katalizátora
- Milyen okostelefont vegyek?
- Akciófigyelő: Megnyílt a Xiaomi hivatalos magyar webáruháza
- Samsung Galaxy S23 Ultra - non plus ultra
- iPhone topik
- Android dual SIM okostelefonok
- Nothing Headphone (1) – nem kell ide idézet
- Xiaomi 15 - kicsi telefon nagy energiával
- Minden téren tudott fejlődni a Motorola Razr 60 Ultra
- Motorola Edge 40 - jó bőr
Új hozzászólás Aktív témák
-
Tomi_78
aktív tag
És még egy kérdésem/gondom van a fejlesztendő programommal kapcsolatban: a címképernyőjén egy olyan animációt szeretnék, hogy a képernyő közepéből jönnek ki a csillagok véletlen irányba, és ez a "csillagkirobbanás" ismétlődne.
Egy ciklussal 22 csillagot hozok létre, de a hatás finoman szólva nem az, amit szeretnék, mert mindig csak 4 irányba mennek a csillagok, nem pedig véletlenszerűen.
Ez a csillagok osztálya:
class Csillag {
public:
Csillag(int xh, int yh) {
xhely = xh;
yhely = yh;
fajta = rand()%2;
szin = rand()%2;
do {
celx = rand()%ablakszel;
} while (celx==xhely);
if (celx < xhely)
xseb = -8;
else xseb = 8;
do {
cely = rand()%ablakmag;
} while (cely==yhely);
if (cely < yhely)
yseb = -8;
else yseb = 8;
};
void kirajzol(HDC grafkez) {
if (fajta == 0) { //Csak egy pont:
if (szin == 0)
SetPixel(grafkez,xhely,yhely,RGB(255,255,255));
else
SetPixel(grafkez,xhely,yhely,RGB(255,255,0));
} else { //+ alakú:
if (szin == 0) {
SetPixel(grafkez,xhely,yhely,RGB(255,255,255)); //Közepe
SetPixel(grafkez,xhely-1,yhely,RGB(255,255,255)); //Közepétől balra
SetPixel(grafkez,xhely+1,yhely,RGB(255,255,255)); //Közepétől jobbra
SetPixel(grafkez,xhely,yhely-1,RGB(255,255,255)); //Közepe fölött
SetPixel(grafkez,xhely,yhely+1,RGB(255,255,255)); //Közepe alatt
}
else {
SetPixel(grafkez,xhely,yhely,RGB(255,255,0)); //Közepe
SetPixel(grafkez,xhely-1,yhely,RGB(255,255,0)); //Közepétől balra
SetPixel(grafkez,xhely+1,yhely,RGB(255,255,0)); //Közepétől jobbra
SetPixel(grafkez,xhely,yhely-1,RGB(255,255,0)); //Közepe fölött
SetPixel(grafkez,xhely,yhely+1,RGB(255,255,0)); //Közepe alatt
};
};
};
int xhely,yhely,celx,cely;
unsigned char fajta,szin;
char xseb,yseb;
bool tulcelxen=false,tulcelyon=false;
};
std::vector<Csillag> csillagok;Ez pedig a kirajzolásuk a WM_PAINT-ben:
for (int cs=0; cs<csillagok.size(); cs++) {
if (csillagok[cs].tulcelxen == false) {
csillagok[cs].xhely += csillagok[cs].xseb;
if ((csillagok[cs].xhely >= csillagok[cs].celx && csillagok[cs].xseb == 8) || (csillagok[cs].xhely <= csillagok[cs].celx && csillagok[cs].xseb == -8))
csillagok[cs].tulcelxen = true;
} else csillagok[cs].xhely += csillagok[cs].xseb;
if (csillagok[cs].tulcelyon == false) {
csillagok[cs].yhely += csillagok[cs].yseb;
if ((csillagok[cs].yhely >= csillagok[cs].cely && csillagok[cs].yseb == 8) || (csillagok[cs].yhely <= csillagok[cs].cely && csillagok[cs].yseb == -8))
csillagok[cs].tulcelyon = true;
} else csillagok[cs].yhely += csillagok[cs].yseb;
if (csillagok[cs].xhely<0 || csillagok[cs].xhely>ablakszel || csillagok[cs].yhely<0 || csillagok[cs].yhely>ablakmag) {
csillagok[cs].xhely = ablakszel/2;
csillagok[cs].yhely = ablakmag/2;
do {
csillagok[cs].celx = rand()%ablakszel;
} while (csillagok[cs].celx == csillagok[cs].xhely);
if (csillagok[cs].celx < csillagok[cs].xhely)
csillagok[cs].xseb = -8;
else csillagok[cs].xseb = 8;
do {
csillagok[cs].cely = rand()%ablakmag;
} while (csillagok[cs].cely == csillagok[cs].yhely);
if (csillagok[cs].cely < csillagok[cs].yhely)
csillagok[cs].yseb = -8;
else csillagok[cs].yseb = 8;
csillagok[cs].tulcelxen = false;
csillagok[cs].tulcelyon = false;
};
csillagok[cs].kirajzol(Memhdc);
};Gyanítom, valami akkor nem lesz jó, mikor a képernyőn kívülre kerülve visszahelyezem őket a közepére, és új célxy koordinátát kapnak véletlenszerűen, de akárhogy nézem, nem látok benne semmi logikai hibát.
Új hozzászólás Aktív témák
● ha kódot szúrsz be, használd a PROGRAMKÓD formázási funkciót!
- OpenWRT topic
- Luck Dragon: Asszociációs játék. :)
- Mikrokontrollerek Arduino környezetben (programozás, építés, tippek)
- Az iPhone a mobilpiac katalizátora
- TCL LCD és LED TV-k
- Autós kamerák
- Apple MacBook
- NVIDIA GeForce RTX 5080 / 5090 (GB203 / 202)
- Sweet.tv - internetes TV
- Formula-1
- További aktív témák...
- BESZÁMÍTÁS! LENOVO LOQ 15AHP9 15 FHD notebook - R7 8845HS 32GB DDR5 1TB SSD RTX 4060 6GB WIN11
- Samsung Galaxy A21s 32GB, Kártyafüggetlen, 1 Év Garanciával
- ÁRGARANCIA!Épített KomPhone Ryzen 7 7700X 32/64GB RAM RTX 5070 12GB GAMER PC termékbeszámítással
- ÁRGARANCIA!Épített KomPhone Ryzen 5 7500F 32/64GB RAM RX 7800 XT 16GB GAMER PC termékbeszámítással
- Tablet felvásárlás! Samsung Galaxy Tab S10+, Samsung Galaxy Tab S10 Ultra, Samsung Galaxy Tab S10 FE
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest