Hirdetés
- Geri Bátyó: Agglegénykonyha 2 – Főzés: szabályok, vagy szabadság?
- Brogyi: CTEK akkumulátor töltő és másolatai
- sziku69: Fűzzük össze a szavakat :)
- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sh4d0w: Netflix? Ugyan, VW előfizetés!
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- eBay-es kütyük kis pénzért
- gban: Ingyen kellene, de tegnapra
- bambano: Bambanő háza tája
Ú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!
- Lenovo ThinkPad 40AF docking station (DisplayLink)
- Samsung Galaxy S22 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! ASUS A620M R5 7500F 32GB DDR5 1TB SSD RTX 4070 SUPER 12GB Zalman M4 Corsair 650W
- AKCIÓ! HP Elitebook 840 G11 üzleti notebook- Intel Core Ultra 5 135U 16GB DDR5 RAM 256GB SSD W11
- LG 65" C1 OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready!
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest