[PHP] Isometrische engine

Pagina: 1
Acties:

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 15-09 16:01
ik ben een isometrishe engine aan het schrijven die isometrish allerlei hokjes kan planten die in een dbase staan, nu wil ik deze hokojes aan de hand van hun id (wat er uit ziet als een coordinaat) allemaal op het scherm pleuren.

het hokje 0-0 komt bovenin de punt en 50-50 onderin, hiertussen liggen natuurlijk 2498 ander hokjes die allemaal aan moeten sluiten.

hiervoor had ik een stuk code geschreven die volgens mij zou moeten werken. (wiskundig iig wel, aldus mijn berekeningen)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
<?
$width=30;
// width of each image
$height=30;
// height of each image
$isometricheight=$height/2;
// the difference that couses isometry to apear in height
$isometricwidth=$width/2;
// the difference that couses isometry to apear in width
$rows=50;
$cols=50;


function getlocation($coords) {
   global $width, $height, $isometricheight, $isometricwidth, $rows, $cols;

   $centerline=$rows/2;

   $subarray=explode($coords, "-");
   // make sure we explode the coords into to seperate peices x and y

   // get the y coordinates by calculations.
   $subarray[0]=settype($subarray[0], "integer");
   $subarray[1]=settype($subarray[1], "integer");

   if (settype($subarray[0], "integer") % 2 == 1) {
       $y=(((settype($subarray[0], "integer")/2)*$height)+$isometricheight);
   // deze interger is dus oneven en is dus niet lief, deze  moet 15 meer verschven worden
   } else {
      $y=(settype($subarray[0], "integer")/2)*$height;
   }

   // get the x coordinates by calculations.
   if (settype($subarray[1], "integer") % 2 == 1) {
      $x=(((settype($subarray[1], "integer")/2-$centerline)*$width)+$isometricwidth);
   // deze interger is dus oneven en is dus niet lief, deze moet 15 meer verschven worden
   } else {
      $x=(settype($subarray[1], "integer")/2-$centerline)*$width;
   }

   echo"<div id=\"";
   echo $coords;
   echo"\" style=\"position:absolute; left=";
   echo $x;
   echo"px; top=";
   echo $y;
   echo"px\">$coords</div>";
}

// ff met de dbase connecten
// en dan de zooi door de functie laten tekenen

function dbconnect() {
   mysql_pconnect("***", "*****", "****" );
   mysql_select_db("*******") or die ("Unable to select database");
}

dbconnect();

$result=mysql_query("select * from hokjes");
while(list($id, $bgr, $inh, $p1, $p2, $p3, $p4, $site, $owner)=mysql_fetch_array($result)) {
   getlocation($id);
}
?>

als er nog iemand wakker genoeg om hiernaar te kijken, want ik kom er niet uit,

zonder de settype( "integer") kwam er overal -750 uit en met komt er -720 uit.
waarom?
ikke niet snappe.

openkat.nl al gezien?


  • mbravenboer
  • Registratie: Januari 2000
  • Laatst online: 06-11-2025
Ik heb je code even tussen [ php] ... [ /php] tags gezet en wat indenting toegevoegd, de kans is dan ongeveer 10 keer zo groot dan iemand je code wil gaan lezen :) .

Wil je hier voortaan even zelf aan denken? :) Mooi :* .

Blog, Stratego/XT: Program Transformation, SDF: Syntax Definition, Nix: Software Deployment


  • Soultaker
  • Registratie: September 2000
  • Laatst online: 01:47
Sloop al die overbodige SetTypes eens uit je code. Vervolgens; wat heb je zelf al gedaan om de fout te achterhalen? Als je zelf niet de moeite wil nemen om je code te debuggen zal ik dat zeker niet gaan doen.

  • Alarmnummer
  • Registratie: Juli 2001
  • Laatst online: 09-07-2024

Alarmnummer

-= Tja =-

Op vrijdag 25 januari 2002 02:48 schreef mbravenboer het volgende:
Ik heb je code even tussen [ php] ... [ /php] tags gezet en wat indenting toegevoegd, de kans is dan ongeveer 10 keer zo groot dan iemand je code wil gaan lezen :) .

Wil je hier voortaan even zelf aan denken? :) Mooi :* .
Je bent al aan het oefenen zie ik :)

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 15-09 16:01
ik heb allles al geprobeerd,

er staat ook dat hij zonder settypes -750 geeft (voor alle input en met - 720

tuurlijk heb ik wel gedebugged, kijk maar naar die echo , welke idioot schrijft nou zo een echo uit (dn moet er toch een fout ingezeten hebben?

nou dan. anyway, als je niet wilt helpen, dan niet daarom zijn we hier met 35 000 man op got.

ik dacht dat dit mischien wel een leuk iets was om even je hersens over te breken want mijne zijn zo ongeveer aan tront. alvast bedankt.

openkat.nl al gezien?


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Leg eerst eens je logaritme uit voordat ik er naar WIL kijken.

Je commentaar in de source is leuk, echter is het niet effectief over het geheel, echter slechts voor die ene specifieke regel. Het beste wat je kan doen is een gedeelte van de code samen pakken, daar een commentaar overschrijven van wat er gebeurd, en pas bij heel erg moeilijke code bij elke regel commentaar zetten wat er precies gebeurd.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 15-09 16:01
oke, hier komt

in een dbase zitten fields met allemaal een id, dat id dat bestaat uit x-y coordinaat

deze hakken we doormidden en willen we dus op een isometriche manier op het scherm gooien.

net zo als sommige games idd.

Nou komt het hokje 0-0 in het midden van het scherm bovenaan, en het hokje 50-0 in de hoek links. daartussen zitten allemaal hokjes zodat het hele veld gevuld is.

de afstand van boven is niet z heel erg moeilijk, omdat de hokjes elkaar voor de helft overlappen (t zijn allemaal kleine ruitjes) nemen we hokjes/2 * de hoogte van elk hokje,

die variabelen om de isometriche verchil op te halen zijn eigenlijk alleen relevant als de hokjes niet zuiere ruitjes zijn.

als een hokje een oneven coordinaat heeft hangt hij dus net een half hokje meer naar beneden dan dat ze uitkomst zou zijn dus die vangen we ook nog op.

zelfde verhaal met de verticale coordinaat, alleen hier moeten we nog de middel lijn (die ene die door 0-0 en 50-50 gaat) even berekenen en eraf trekken, zo krijgen we voor elkaar dat 50-0 helemaal links komt en 30-0 iets minder.

nou das de uitleg, als dit werkt ga ik de hokjes op zo min mogenlijk layers printen en maybe een z coordinaat toevoegen.

openkat.nl al gezien?


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 15-09 16:01
oke ik hem ng eens doorgelezen, maar t algoritme klopt nie helemaal, t was gister ook weer erg laat eigenlijk.

plzz iemad met heldere ideen? of iemand als een eerder met een isometriche engine gespleelt?

openkat.nl al gezien?


  • killercow
  • Registratie: Maart 2000
  • Laatst online: 15-09 16:01
pls mensen ik loop constant over dit ding na te denken, en ik kom er maar niet uit.

ik snap t gewoon niet meer :(

openkat.nl al gezien?


  • D2k
  • Registratie: Januari 2001
  • Laatst online: 31-08 10:19

D2k

[topic=327241/1/25]
Policy mbt het omhoogschoppen van threads. Wacht minstens 24 uur voor je je topic omhoog schopt. Doe dit dan ook alleen met een zinnige opmerking en dus niet met "Waarom antwoord er nou niemand" nadat je 5 minuten geen antwoord hebt gehad. Sommigen van ons hebben een leven :+
niet meer doen dus :)
alleen als je nog iets echt hebt toe te voegen van "ik heb dit en dat nog geprobeerd maar dat werkt ook niet" of na 24 uur
:)

Doet iets met Cloud (MS/IBM)


Verwijderd

Tja ik zie zo niet wat er fout kan zijn natuurlijk ...

misschien wat test data geven ? dan probeer ik hem ff, kan zo niet ...

  • killercow
  • Registratie: Maart 2000
  • Laatst online: 15-09 16:01
agh laat ook maar, al dat gedoe hier op got, i begint mij een beetje te irriteren, iedereen maakt regeltjes, niemand komt ze na, niemand ergert zich eraan tot ze admin/mod/lightmod worden

dan ineens komen er communistische denkwijzes naar boven die eigenlijk alleen helemaal nergens over gaan, want jij schopt mij post toch ook weer omhoog, NODELOOS

en niemand schiet er iets mee, ik niet en de rest van de bezoekers ook niet, waneer beginnen mensen weer eens na te denken, waneer checkt met de poster z'n profiel eerst voordat ze zeggen, n0000b, oid.

begint wel een eebtje flauw te worden dat wat je ook post, NIEMAND ook maar iets zal dan behalve zijken over de syntax van je post, ipv van de inhoud van je post.

als er nog mensen zijn die wel gewoon met elkaar kunnnen omgaan en wel elkaar kunnen helpen, zoals sommige hierboven ook wel doen hoor. dan zou ik liever hebben dat alleen die mensen in mijn topics posten.

aljeblieft?

openkat.nl al gezien?


  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

de returnwaarde van settype() is niet de gewijzigde var maar een boolean, afaik.

dus bijvoorbeeld dit:
$subarray[0]=settype($subarray[0], "integer");
zal niet het effect hebben wat ik denk dat je wilt bereiken.

waarschijnlijk wil je dit:
settype($subarray[0], "integer");

Today's subliminal thought is:


  • SuperRembo
  • Registratie: Juni 2000
  • Laatst online: 20-08-2025
Hint:

array explode (string separator, string string [, int limit])

En gebruik ook wat duidelijkere namen, bijvoorbeeld $x0 in plaats van $subarray[0]. Al die settype zooi kan je er beter uit halen.

| Toen / Nu


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Klein voorbeeldje misschien, krijgt je misschien door wat voor functie je kunt gebruiken ;)

De eerste punt die je neerzet is ( 0,0 ).

De tweede rij punten die je neerzet is ( 1,0 ) en ( 0,1 )

De Derde rij punten die je neerzet is ( 2,0 ) ( 1,1 ) en ( 0,2 )

Kijk eens naar de totalen, kan je daar een bepaalde functie uithalen?
Zoja, kan je een functie schrijven die het in die volgorde geeft.
Zoja kan je een functie schrijven die aan de hand van de vorige functie de juiste database veld uit de database haalt (iets wat je niet wilt want je wilt maar één query op de database doen.)

Kijk eens hoe ver je komt, als je ergens vast kom te zitten roep je maar.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Op vrijdag 25 januari 2002 18:08 schreef killercow het volgende:
agh laat ook maar, al dat gedoe hier op got, i begint mij een beetje te irriteren, iedereen maakt regeltjes, niemand komt ze na, niemand ergert zich eraan tot ze admin/mod/lightmod worden
[..]
Ehh, mag ik zeggen dat er altijd al voor werdt gewaarschuwd?

Ik zou je dringend willen adviseren om voordat je iets tikt als je boos/van slag bent eerst tot 100 te tellen (en NIET een getal overslaan en gewoon RUSTIG tellen ja!). Door een agressieve houding aan te nemen heb je kans dat men je juist minder wilt gaan helpen, ik zag gisteren al dat je posts een beetje "vijandig" waren, en nu deze zou men ook als "vijandig" kunnen zien, Wij zijn bezig om het te proberen weer gezellig te maken, Aggressieve houdingen passen niet binnen onze visie van de toekomst, en in principe het enige wat je bereikt is dat mensen die juist komen om mensen te helpen hier je opeens NIET willen helpen (en dat is niet iets waar je op uit bent neem ik aan.)

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR


  • dusty
  • Registratie: Mei 2000
  • Laatst online: 21-02 00:06

dusty

Celebrate Life!

Topic veranderd van "[PHP] Rare uitkomst van berekening" naar "[PHP] Isometrische Engine", duidt volgens mij beter de inhoud van de thread aan.

Back In Black!
"Je moet haar alleen aan de ketting leggen" - MueR

Pagina: 1