Array Problem

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Array Problem

    Nabend Leute :3
    (Wenn das der Falsche Bereich ist tut es mir leid .___.)
    Ich versuche zur Zeit ein 2D RPG zu programmieren. Mir gelingt das auch bis zu diesem Zeitpunkt aucht ganz gut!
    Mein Problem sieht so aus: ich hab ein Inventar was automatisch mit Items befüllt wird. Das Array grid habe ich geschafft zu zeichnen und die jeweiligen Item gelangen auch an die richtige Stelle. Nun hätte ich es gern das wenn ich mit meiner Maus über einen Slot bewege der ein item beinhaltet, mir den preis angibt.
    Meine for-Schleife mit dem ich das Grid zeichen sieht so aus :

    GML-Quellcode

    1. i=0;
    2. for(yy=0;yy<5;yy++){
    3. for(xx=0;xx<4;xx++){
    4. draw_sprite(global.inventory[i++,4],0,x+xx*16,y+yy*16);
    5. }
    6. }


    Kann mir einer vielleicht ein Beispiel zeigen wie ich die X und Y koordinate jedes einzelnen slots bekomme ?
    Wenn noch andere Infos benötigt werden, einfach schreiben, werde die dann hinzufügen :3

    Danke fürs Lesen und ich hoffe mir kann einer helfen !
  • Ich benutze immer die Art mit der Floor funktion.
    also floor(x).
    Die Funktion entfernt die Stellen hinterm Komma oder mathematisch gesagt: Es wird abgerundet.
    Wenn du jetzt die Mauskoordinaten hast, kannst du diese durch 16 rechnen und abrunden lassen. Dann hast du eine Magische Zahl :D



    Als Beispiel:
    Die Koordinaten vom Inventar
    10,10
    Mauskoordinaten
    170,170

    Als erstes sollte man die Mauskoordinaten mit den Koordinaten vom Inventar Subrahieren. Also 170-10 und 170-10.
    Dann durch 16, da dein Raster 16x16 groß ist und das dann abrunden.

    Code:

    GML-Quellcode

    1. rasterx = 16;
    2. rastery = 16;
    3. inventarx = 10;
    4. inventary = 10;
    5. //mouse_x = 170
    6. //mouse_y = 170
    7. xx = floor((mouse_x-inventarx)/rasterx);
    8. yy = floor((mouse_y-inventary)/rastery);
    9. //global.inventory[xx,yy]
    Alles anzeigen


    Hier wäre nur xx und yy etwas größer als 4 und 5 (so groß wie dein Inventar). Da müsstest du halt schauen ob die Koordinaten von der Maus draußen sind. ;)

    Edit: Soweit ich weis, müsste das in Technischen Fragen :D
    Ein Bug ist mehr als nur ein Bug, es ist ein... Käfer!
    Egal, wie gut du eine Mauer baust, sie fällt um.... der klügere gibt nach :D

    Willst du mit mir auf Discord Chatten/Quatschen?
    Meine Husi's Tutorial Reihe
  • Danke für deine schnelle Antwort!

    Ich habe es hinbekommen, glaube ich habs ein wenig anders gemacht:

    GML-Quellcode

    1. if(mouse_x <= room_width && mouse_x >= x) and (mouse_y <= 112 && mouse_y >= y){
    2. mouse_pos_x = mouse_x-192
    3. mouse_pos_y = mouse_y-32
    4. index_ = floor(mouse_pos_y/16)*4+floor(mouse_pos_x/16)
    5. global.descr = global.inventory[index_,5]
    6. }else{
    7. global.descr = 0;
    8. }
    Alles anzeigen


    Aber trotzdem danke, habe es durch dich besser verstanden :3

    mfg Wetschi aka Sillus

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von Wetschi12 ()