- sziku69: Szólánc.
- Luck Dragon: Asszociációs játék. :)
- sziku69: Fűzzük össze a szavakat :)
- D1Rect: Nagy "hülyétkapokazapróktól" topik
- Szoszo94: Xiaomi Mi Router 3G - Padavanra fel!
- gban: Ingyen kellene, de tegnapra
- [K2]: A vagyonvédelmi rendszerszerelővé válás rögös útja
- droidic: A Coffee Lake titkos nyolcmagos processzora – CC150
- GoodSpeed: Samsung Galaxy S24 FE - tapasztalatok
- Argos: PH!arckép
Új hozzászólás Aktív témák
-
zuzu000
őstag
Sziasztok!
C#-ban próbálok egy wolf3d klónt írni, suliban beadandóhoz kell. Megvan az eredeti forráskód, de c++ tudásom sajna ennyire nincs a topon, hogy minden részét tudjam értelmezni. Egy metódus lenne, ami elég fontos, ha tudnátok segíteni, megköszönném (hogy pontosan mit is csinál)
boolean CheckLine (objtype *ob)
{
int x1,y1,xt1,yt1,x2,y2,xt2,yt2;
int x,y;
int xdist,ydist,xstep,ystep;
int temp;
int partial,delta;
long ltemp;
int xfrac,yfrac,deltafrac;
unsigned value,intercept;
x1 = ob->x >> UNSIGNEDSHIFT; // 1/256 tile precision
y1 = ob->y >> UNSIGNEDSHIFT;
xt1 = x1 >> 8;
yt1 = y1 >> 8;
x2 = plux;
y2 = pluy;
xt2 = player->tilex;
yt2 = player->tiley;
xdist = abs(xt2-xt1);
if (xdist > 0)
{
if (xt2 > xt1)
{
partial = 256-(x1&0xff);
xstep = 1;
}
else
{
partial = x1&0xff;
xstep = -1;
}
deltafrac = abs(x2-x1);
delta = y2-y1;
ltemp = ((long)delta<<8)/deltafrac;
if (ltemp > 0x7fffl)
ystep = 0x7fff;
else if (ltemp < -0x7fffl)
ystep = -0x7fff;
else
ystep = ltemp;
yfrac = y1 + (((long)ystep*partial) >>8);
x = xt1+xstep;
xt2 += xstep;
do
{
y = yfrac>>8;
yfrac += ystep;
value = (unsigned)tilemap[x][y];
x += xstep;
if (!value)
continue;
if (value<128 || value>256)
return false;
//
// see if the door is open enough
//
value &= ~0x80;
intercept = yfrac-ystep/2;
if (intercept>doorposition[value])
return false;
} while (x != xt2);
}
ydist = abs(yt2-yt1);
if (ydist > 0)
{
if (yt2 > yt1)
{
partial = 256-(y1&0xff);
ystep = 1;
}
else
{
partial = y1&0xff;
ystep = -1;
}
deltafrac = abs(y2-y1);
delta = x2-x1;
ltemp = ((long)delta<<8)/deltafrac;
if (ltemp > 0x7fffl)
xstep = 0x7fff;
else if (ltemp < -0x7fffl)
xstep = -0x7fff;
else
xstep = ltemp;
xfrac = x1 + (((long)xstep*partial) >>8);
y = yt1 + ystep;
yt2 += ystep;
do
{
x = xfrac>>8;
xfrac += xstep;
value = (unsigned)tilemap[x][y];
y += ystep;
if (!value)
continue;
if (value<128 || value>256)
return false;
//
// see if the door is open enough
//
value &= ~0x80;
intercept = xfrac-xstep/2;
if (intercept>doorposition[value])
return false;
} while (y != yt2);
}
return true;
}A nagyrésze érthető, de vannak c++ dolgok, amik számomra teljesen ismeretlenek. False-t ad vissza, ha a "vonal" útjában van valami, igazat, ha a kettő obj között semmi nincs.
xt1 = x1 >> 8;
Ez pontosan mit csinál?
Illetve y1&0xff és a többi ilyen rész?
Előre is köszi -
zuzu000
őstag
ezzel esetleg van valakinek tapasztalata?
-
zuzu000
őstag
Sziasztok!
Szerintetek a programozás tanulást melyik nyelvvel kéne kezdeni? Sima C, vagy C++ jobb lenne? C-hez találtam tutorialt a Full Circle magazinban, így ez lehet könnyebben menne, mivel C++ könyvek amit találtam, inkább haladóknak van.
Teljesen kezdő vagyok a programozásban. Ha tudtok valamilyen jobb tanulási elkezdést, akkor azt is kérlek osszátok meg velem.
Ú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!
- AZONNALI SZÁLLÍTÁS Eredeti Microsoft Office 2019 Professional Plus
- Bowers/Wilkins PX8 fejhallgatók (dupla Bluetooth eszköz csatlakoztatása!) (ELKELT)
- Telefon felvásárlás!! iPhone 16/iPhone 16 Plus/iPhone 16 Pro/iPhone 16 Pro Max
- ÁRGARANCIA!Épített KomPhone Ryzen 7 5700X 16/32/64GB RAM RX 7600 8GB GAMER PC termékbeszámítással
- ASUS Radeon HD6950 DirectCU II 2GB 256bit GDDR5 EAH6950 DCII/2DI4S/2GD5 Videokártya eladó
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest