Hirdetés
- One mobilszolgáltatások
- Apple iPhone Air - almacsutka
- Yettel topik
- Fotók, videók mobillal
- Tényleg háromra szűkül a Xiaomi 17 Ultra kameráinak száma
- Nem lesz olcsó a Realme GT 8 Pro Európában
- Xiaomi 13T és 13T Pro - nincs tétlenkedés
- Bemutatkozott a Poco X7 és X7 Pro
- Fele annyit ér az iPhone Air, mint amennyibe pár hete került
- Android szakmai topik
Ú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!
- Folyószámla, bankszámla, bankváltás, külföldi kártyahasználat
- World of Tanks - MMO
- Redmi Pad 2 Pro / Poco Pad M1 - egy teszt, két lélek
- Autós topik
- Milyen alaplapot vegyek?
- Akkumulátor töltő digitális fényképezőgéphez
- Xbox Series X|S
- Milyen asztali (teljes vagy fél-) gépet vegyek?
- Háztartási gépek
- Androidos tablet topic
- További aktív témák...
- Xiaomi Redmi 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- BESZÁMÍTÁS! Asus ROG G531GV Gamer notebook - i7 9750H 16GB DDR4 512GB SSD RTX 2060 6GB WIN11
- Airmsen YW500 ablaktisztító robot / 12 hó jótállás
- LG 35WN75C-B - 35" Ívelt VA - 3440x1440 - 100Hz 5ms - USB Type-C 60W - AMD FreeSync - HDR 10
- LG 32GS95UX - 32" OLED / UHD 4K / 240Hz - 480Hz & 0.03ms / 1300 Nits / NVIDIA G-Sync / AMD FreeSync
Állásajánlatok
Cég: BroadBit Hungary Kft.
Város: Budakeszi
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest

.

