game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
Pagina's: 1 [2] 3 4 ... 10

 11 
 Gepost op: 29 September 2020, 18:24:38 
Gestart door trevortjes - Laatste bericht door Morten
Joepie!!!

 12 
 Gepost op: 29 September 2020, 18:15:42 
Gestart door trevortjes - Laatste bericht door trevortjes
Omdat veel van jullie erom vroegen, hier het allerlaatste liedje

 GM134 GM134 GM134 GM080

 13 
 Gepost op: 29 September 2020, 17:45:02 
Gestart door trevortjes - Laatste bericht door joeykapi
Erg jammer Treurig

 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 Gemoedelijk
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 Knipoog

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 Knipoog


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

GML:
/// @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. Rolt ogen

Af en toe moet je ook iemand anders de kans geven Gemoedelijk

Mooie example trouwens! Heb ooit ook zoiets gemaakt voor een Pacman spelletje, dus Martientje, die kun je nu ook al bijna maken Blij

 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. Rolt ogen

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. Euforisch (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:
GML:
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):
GML:
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.

Code:
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 Gemoedelijk

 Game Maker Studio
GML:
//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 Knipoog

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 >
Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2021 Nederlandse Game Maker Community