|
 |
|
|
|
|
Pagina's: 1 [2] 3 4 ... 10
11
Gepost op: 29 September 2020, 18:24:38
|
Gestart door trevortjes - Laatste bericht door Morten
|
Joepie!!!
|
|
13
Gepost op: 29 September 2020, 17:45:02
|
Gestart door trevortjes - Laatste bericht door joeykapi
|
Erg jammer 
|
|
14
Gepost op: 29 September 2020, 15:00:18
|
Gestart door trevortjes - Laatste bericht door trevortjes
|
Ik maak geen muziekjes meer trouwens
|
|
15
Gepost op: 28 September 2020, 21:48:52
|
Gestart door Martientje - Laatste bericht door Martientje
|
thnx Ik kan het bestand alleen niet openen in game maker studio 2, hij herkent het bestand niet. Dus nu eerst een speurtocht naar een game maker 8 versie  Maar alvast heel erg bedankt voor de hulp. Als ik er niet uitkom, kan ik dan meer vragen aan jullie stellen? Ik had trouwens intussen al een andere oplossing bedacht met een random path, het werkt redelijk behalve dat hij soms hoeken afsnijd en nu moet ik een code bedenken dat als hij tegen o_Snake aanbotst de omgekeerde richting uitrent. Dat is nog lastig. Ik heb een code online gevonden, maar daardoor krijg ik clitches in het spel. So still working on it  edit: Ik heb uw code gebruikt van muislijst, maar hij werkt niet met de gespawnde objecten. Mag ik daar ook hulp bij vragen. De code die ik gebruik om de o_Mouse te spawnen staat hierbeneden. De code word opgestart door een start alarm in het create event /// @description Insert description here // You can write your code in this editor var fav = irandom(99); if (fav < 50) { X = room_width/25; Y = room_height/25; XX = X*(irandom(24)); YY = Y*(irandom(24)); possibleX = XX+16; possibleY = YY+16; while !place_empty(possibleX,possibleY) { XX = X*(irandom(24)); YY = Y*(irandom(24)); possibleX = XX+16; possibleY = YY+16; } instance_create_layer(possibleX,possibleY,"Layer3",o_Mouse) } alarm[0]=60;
|
|
16
Gepost op: 28 September 2020, 21:43:57
|
Gestart door Martientje - Laatste bericht door massimot
|
Flumble Ik had verwacht dat massimot onderhand al had geantwoord.  Af en toe moet je ook iemand anders de kans geven  Mooie example trouwens! Heb ooit ook zoiets gemaakt voor een Pacman spelletje, dus Martientje, die kun je nu ook al bijna maken 
|
|
17
Gepost op: 27 September 2020, 18:14:29
|
Gestart door Martientje - Laatste bericht door Flumble
|
Ik had verwacht dat massimot onderhand al had geantwoord.  Ten eerste zou ik 32 pixels verderop kijken i.p.v. 16. Ook de muren zijn 32x32, toch? Nou heb ik een code geschreven, die voor een deel lijkt te werken, behalve dan dat hij de botsing niet op tijd uit lijkt te voeren.
Hmm, is dat omdat je die 16 pixels vooruit kijkt of heb je toevallig een speed die geen deler is van 32? Want als je speed bijvoorbeeld 3 is, dan beweegt de muis 3, 6, 9,..., 30, 33,... pixels (en slaat 32 over) en komt-ie pas 3 cellen verder weer op een place_snapped. Om de code een stuk te versimpelen zou ik eerst kijken welke richtingen vrij zijn en dan 1 van die richtingen kiezen. Omdat ik niet kan raden wat de duidelijkste/makkelijkste/handigste methode is, heb ik ze allemaal in een voorbeeld gezet: https://flumble.nl/gamemaker/Examples/doolhofdmuis.gm80.gmk.  (ja, het is een oud GM8-bestand, maar dat moet ook GMStudio 2 nog wel kunnen importeren) Het bevat - MuisMetDoel kijkt welke richtingen vrij zijn door in elke richting een Doel te spawnen (die zichzelf meteen verwijderen als ze ergens mee botsen) en dan richting 1 van de doelen te gaan. Omdat de doelen altijd 32px verderop staan hoef je niet meer met place_snapped te werken. (Je moet er alleen wel voor zorgen dat je de muis precies op het huidige doel hebt staan voordat je de nieuwe maakt, anders verschuiven je doelen.) Het grote nadeel is dat deze methode maar voor 1 muis werkt
- MuisLijst maakt tijdelijk een lijstje waar alle vrije richtingen in worden opgeslagen en kiest er 1 van. (Maar gebruikt place_snapped dus je snelheid moet wel 0,5, 1, 2, 4, 16 of 32 zijn.)
- MuisLoop doet het simpeler want die heeft gewoon een loop die steeds een willekeurige richting kiest totdat er een gekozen wordt die geen obstakel voor zich heeft.
Verder bevat het MuisStappenteller: een alternatief voor de muizen om niet place_snapped te gebruiken maar precies bij te houden hoe ver de muis nog moet lopen tot de 32px voorbij zijn, zodat je elke willekeurige snelheid kan kiezen. En nog een andere manier om ongeacht je snelheid op een uitgelijnde plek te komen, die het niet tot de demo heeft geschopt: var roosterx, roostery; roosterx = 32*round(x/32); roostery = 32*round(y/32);
// als de muis minder dan een halve stap van een gesnapte plek is, spring er dan naartoe if (point_distance(x, y, roosterx, roostery) <= speed/2) { x = roosterx; y = roostery; }
// hierna kan code met move_snapped
En ik bedenk me net dat MuisMetDoel iets simpeler kan door mp_linear_step te gebruiken (want die plaatst de muis precies op de bestemming als het minder dan 1 stap ver weg is en geeft terug of de bestemming bereikt is). Klein nadeel is dat je speed altijd 0 is (mocht dat belangrijk voor je zijn): var doelBereikt; doelBereikt = mp_linear_step(Doel.x, Doel.y, 1.9622, false);
if (doelBereikt) { with (Doel) instance_destroy();
instance_create(x+32, y , Doel); instance_create(x , y+32, Doel); instance_create(x-32, y , Doel); instance_create(x , y-32, Doel);
var doelkeuze; doelkeuze = instance_find(Doel, irandom(instance_number(Doel)-1));
with (Doel) { if (id != doelkeuze) instance_destroy(); } }
|
|
18
Gepost op: 24 September 2020, 20:41:57
|
Gestart door Martientje - Laatste bericht door Martientje
|
Hey, hier ben ik weer. Ik probeer een labyrinth spel te maken, waarin een muis door het labyrinth loopt. Hij moet automatisch als hij op place_snapped(32,32) zit een nieuwe richting kiezen en als hij tegen een muur aan botst een nieuwe richting kiezen die niet de kant op is waar de botsting plaats vind. Het grid is 32 bij 32 en de sprite van de muis (en alle andere onderdelen) zijn 32 bij 32 pixels. De muis heeft de origin in het center zitten (dus op 16 bij 16). Nou heb ik een code geschreven, die voor een deel lijkt te werken, behalve dan dat hij de botsing niet op tijd uit lijkt te voeren. Heeft iemand advies voor me hoe ik de botsing het beste kan berekenen (het liefst volledig uitgelegd, ik ben heel slecht met berekeningen) Hieronder staat ook mijn code, als ik het compleet verkeerd aanpak laat het me dan ook aub weten, want deze code is net iets te lastig voor me. de variabelen voor forwards, backwards, left en right zijn ingesteld op de getallen coronsponderend met de richting. if !place_snapped(32,32) { exit; } else
direction = choose(forwards,backwards,left,right);
if place_meeting(x-16,y,o_Wall) //left { if place_meeting(x+16,y,o_Wall) //right { if place_meeting(x,y-16,o_Wall) // forwards { direction = backwards; } if place_meeting(x,y+16,o_Wall) // backwards { direction = forwards; } } else { direction = right; } } if place_meeting(x+16,y,o_Wall) // right { if place_meeting(x-16,y,o_Wall) // left { if place_meeting(x,y-16,o_Wall) // forwards { direction = backwards; } if place_meeting(x,y+16,o_Wall) // backwards { direction = forwards; } } else { direction = left; } } if place_meeting(x,y-16,o_Wall) // forwards { if place_meeting(x,y+16,o_Wall) // backwards { if place_meeting(x-16,y,o_Wall) // left { direction = right; } if place_meeting(x+16,y,o_Wall) // right { direction = left; } } else { direction = backwards; } }
if place_meeting(x,y-16,o_Wall) // forwards { if place_meeting(x,y+16,o_Wall) // backwards { if place_meeting(x-16,y,o_Wall) // left { direction = right; } if place_meeting(x+16,y,o_Wall) // right { direction = left; } } else { direction = backwards; } }
|
|
19
Gepost op: 27 Augustus 2020, 20:54:45
|
Gestart door Martientje - Laatste bericht door Martientje
|
Ik ben er achter. Waar in het begin var match = true staat, moest var match = false staan. De complete code die ik heb gebruikt staat hieronder, misschien heeft iemand er nog iets aan. Heel erg bedankt voor al jullie hulp en tot bij het volgende probleem  //initialize variables width = 6; height = 10;
offset = 32;
xstart = 88; ystart = 216;
match = noone;
// Create the field for (i=0; i < width; i++) { for (j=0; j <height; j++) { instance_create(offset * i + xstart, offset * j + ystart,o_BackgroundTile) var dot = instance_create(offset * i + xstart, offset * j + ystart,o_Dot) } }
// Check that no matches can be made
do { match = false;
// Set random image_index for (i=0; i < width; i++;) { for (j=0; j < height; j++;) { var inst = instance_position(offset * i + xstart, offset * j + ystart,o_Dot); inst.image_index = choose(0,1,2,3,4,5,6,7); // LET OP: vul hier in wat je nodig hebt } }
for (i=0; i < width; i++;) { for (j=0; j < height; j++;) {
var inst = instance_position(offset * i + xstart, offset * j + ystart,o_Dot);
// Left-right check if (i > 0 and i < width - 1) { var inst_left = instance_position(offset * (i-1) + xstart, offset * j + ystart,o_Dot); var inst_right = instance_position(offset * (i+1) + xstart, offset * j + ystart,o_Dot);
// Als er links en rechts een zelfde ligt, dan is er 3 op een rij if (inst.image_index == inst_left.image_index && inst.image_index == inst_right.image_index) { match = true; } }
// Bottom-down check if (j > 0 and j < height-1) { var inst_up = instance_position(offset * i + xstart, offset * (j-1) + ystart,o_Dot); var inst_down = instance_position(offset * i + xstart, offset * (j+1) + ystart,o_Dot);
// Als er links en rechts een zelfde ligt, dan is er 3 op een rij if (inst.image_index == inst_up.image_index && inst.image_index == inst_down.image_index) { match = true; } }
} }
} until (match == false)
alarm[0]=20;
state = "Fill";
|
|
20
Gepost op: 24 Augustus 2020, 20:37:33
|
Gestart door Martientje - Laatste bericht door Martientje
|
thnx ik ga het proberen. Ik ben wel echt nog nieuw op het gebied van gml, dus ik zal waarschijnlijk wel om hulp moeten vragen  Ik heb de show_message actie geprobeerd, en hij lijkt alles te herkennen (zowel de inst als de match) de code lijkt alleen niet de do until uit te voeren. Is er misschien een stap die ik heb overgeslagen in de do loop? ik heb nog even verder uitgeprobeerd met de volgende code, maar hij geeft meteen aan "no match" en blijft dit herhalen, waardoor ik toch het gevoel heb dat de code niet volledig word uitgevoerd. Kunt u nog een keer kijken? //initialize variables width = 6; height = 10; offset = 32; xstart = 88; ystart = 216; match = true; // Create the field for (i=0; i < width; i++) { for (j=0; j <height; j++) { instance_create(offset * i + xstart, offset * j + ystart,o_BackgroundTile) var dot = instance_create(offset * i + xstart, offset * j + ystart,o_Dot) } } // Check that no matches can be made do { // Set random image_index for (i=0; i < width; i++) { for (j=0; j < height; j++) { var inst = instance_position(offset * i + xstart, offset * j + ystart,o_Dot); inst.image_index = choose(0,1,2,3,4,5,6,7,8); // LET OP: vul hier in wat je nodig hebt } } for (i=0; i < width; i++;) { for (j=0; j < height; j++;) { var inst = instance_position(offset * i + xstart, offset * j + ystart,o_Dot); // Left-right check if (i > 0 and i < width - 1) { var inst_left = instance_position(offset * (i-1) + xstart, offset * j + ystart,o_Dot); var inst_right = instance_position(offset * (i+1) + xstart, offset * j + ystart,o_Dot); // Als er links en rechts een zelfde ligt, dan is er 3 op een rij if (inst.image_index == inst_left.image_index && inst.image_index == inst_right.image_index) { match = true; show_message_async(match); }else{match = false; show_message("no match")} } // Bottom-down check if (j > 0 and j < height-1) { var inst_up = instance_position(offset * i + xstart, offset * (j-1) + ystart,o_Dot); var inst_down = instance_position(offset * i + xstart, offset * (j+1) + ystart,o_Dot); // Als er links en rechts een zelfde ligt, dan is er 3 op een rij if (inst.image_index == inst_up.image_index && inst.image_index == inst_down.image_index) { match = true; show_message_async(match); }else{match = false; show_message("no match")} } } } } until (match = false) alarm[0]=20; state = "Fill";
|
|
Pagina's: 1 [2] 3 4 ... 10
>
|
|
|