game maker
Gebruikersnaam:
Wachtwoord:
Home Info Forums Help
Welkom, Gast. Alsjeblieft inloggen of registreren.
+  Forums
|-+  Werken met Game Maker
| |-+  Beginners (Moderators: Erik Leppen, ericlegomeer, BlueMoonProductions)
| | |-+  ds list en object verwijderen
Pagina's: [1]
« vorige volgende »
Print
Advertenties

Martientje
Gebruiker

Offline Offline

Berichten: 102


« Gepost op: 28 Oktober 2020, 00:11:53 »

oke hier ben ik weer. Ik ben nog steeds bezig met mijn snake game, maar ik zit nu over een andere methode na te denken, ik heb geen idee of dit uberhaupt mogelijk is dus daarom wil ik het hier vragen.

a) is het mogelijk om een create_instance/object toe te voegen aan een ds list
b) is het mogelijk om via het opvragen van de groote van de ds list de eerst gecreerde object op te vragen
en c) is het dan mogelijk om dat object te vernietigen?

alvast bedankt!

Naar boven Gelogd

massimot
Gebruiker


Offline Offline

Berichten: 1395

GameMaker Studo 1.4 Prof + Android/iOS


« Antwoord #1 Gepost op: 29 Oktober 2020, 15:47:55 »

Hoi Martientje,

Daar ben ik weer Gemoedelijk Uiteraard is (a) mogelijk, maar dat hoeft niet voor (b) en (c). Wat je kunt doen, is bij het aanmaken van een instantie
GML:
var i = instance_create_layer(x, y, "Layer1", obj_snake);
deze instantie een "aanmaaktijd" meegeven. Het spel houdt zelf bij hoeveel tijd er is verstreken sinds het opstarten van het spel. Bekijk bijvoorbeeld current_time eens.

Dus dan krijg je zoiets als
GML:
var i = instance_create_layer(x, y, "Layer1", obj_snake);
i.aanmaaktijd = current_time;

Vervolgens wil je op een gegeven moment van alle obj_snake de instantie verwijderen die het eerst is aangemaakt? Dan kun je bijvoorbeeld het volgende doen:
GML:
var oudste_instantie_id = 0;
var oudste_instantie_tijd = current_time;
with(obj_snake) // doorzoek alle instanties van obj_snake
{
     // Bekijk of de huidige instantie een aanmaaktijd heeft die eerder is dan degene die je toe nu toe hebt gevonden
     if aanmaaktijd < oudste_instantie_tijd
    {
          // Zo ja, dan is dit nu de oudste instantie
          oudste_instantie_id = id;
          oudste_instantie_tijd = aanmaaktijd;
    }
}

// We willen de oudste instantie verwijderen
with(oudste_instantie_id)
{
    instance_destroy();
}

Bekijk ook eens deze tutorial van Erik Leppen over het zoeken van een instantie met de hoogste/laagste waarde.

Succes!

Naar boven Gelogd

Martientje
Gebruiker

Offline Offline

Berichten: 102


« Antwoord #2 Gepost op: 30 Oktober 2020, 16:14:11 »

heel erg bedankt voor uw hulp. Echter heb ik er problemen mee om het te begrijpen. Ik heb de code verwerkt in mijn code, maar ik denk dat ik daar een foutje bij heb gemaakt en het niet in de goede plek heb geplaatst. Waar moeten de stukken code?
Ook heb ik gekeken naar de tutorial die u mij had doorgestuurd, echter snap ik daar ook maar weinig van. Als u dat zou willen doen zou ik wel wat extra uitleg kunnen gebruiken daarbij, want ik wil het heel graag allemaal leren.

update:
ik heb de code nu zo dat hij wat doet, alleen verwijdert hij de gehele slang. Wat doe ik verkeerd?

update 2:
ik ben nog wat verder gegaan en hij doet nu wat de code zou moeten doen, behalve dat hij het blokje voor de staart steeds verwijderd. Ik vermoed dat dat aan de global.length en het in eerste instantie aanmaken van de slang ligt, maar ik weet nu niet zo goed hoe ik dit moet oplossen. Ik zet al mijn code die te maken hebben met o_Snake hieronder. Hulp is heel erg gewaardeerd.

o_Controller create event:

GML:
global.dir = 3;
global.length = 3;
randomize();

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;
}
i = instance_create_layer(possibleX,possibleY,"Layer1",o_Snake);
i.aanmaaktijd = current_time;

o_Snake create event

GML:
/// @description Insert description here
// You can write your code in this editor



currentID = 0;


aanmaaktijd = current_time;

alarm[0] =15;

move_snap(16,16);



o_Snake alarm[0] event

GML:
/// @description Insert description here
// You can write your code in this editor
//id0 = head
if (currentID == 0)
// direction
// 0 = right
// 1 = left
// 2 = up
// 3 = down


{
currentID +=1;
alarm[0] = 15;
switch(global.dir)
{
case 0:
i = instance_create_layer(x + 32, y, "Layer1", o_Snake);
i.aanmaaktijd = current_time;
break;
case 1:
i = instance_create_layer(x - 32, y, "Layer1", o_Snake);
i.aanmaaktijd = current_time;
break;
case 2:
i = instance_create_layer(x, y - 32, "Layer1", o_Snake);
i.aanmaaktijd = current_time;
break;
case 3:
i = instance_create_layer(x, y + 32, "Layer1", o_Snake);
i.aanmaaktijd = current_time;
break;
}
}
else if (currentID == (global.length -1))
{
instance_destroy();
}
else
{
currentID +=1;
alarm[0] = 15;
}

o_Snake key_press (delete) event

GML:
/// @description Insert description here
// You can write your code in this editor
var oudste_instantie_id = 0;
var oudste_instantie_tijd = current_time;
with(o_Snake.i) // doorzoek alle instanties van obj_snake
{
     // Bekijk of de huidige instantie een aanmaaktijd heeft die eerder is dan degene die je toe nu toe hebt gevonden
     if aanmaaktijd < oudste_instantie_tijd
    {
          // Zo ja, dan is dit nu de oudste instantie
          oudste_instantie_id = id;
          oudste_instantie_tijd = aanmaaktijd;
    }
}

// We willen de oudste instantie verwijderen
with(oudste_instantie_id)
{
    instance_destroy();
}
//global.length -=1;

« Laatste verandering: 3 November 2020, 17:43:30 door Martientje »
Naar boven Gelogd

PiJoKra
Gebruiker

Offline Offline

Berichten: 719


« Antwoord #3 Gepost op: 3 November 2020, 18:01:34 »

Hey Martientje,

Ik reageer hier enkel om te zeggen dat bijna niemand nog dit forum gebruikt. De meeste (oud-)leden zitten nu op deze chatgroep: http://www.game-maker.nl/forums/topic,86257.msg601966 (Link staat onderaan het eerste bericht)

Er is een bot in die chatgroep die ons op de hoogte brengt wanneer hier een nieuw bericht is geplaatst, wat volgens mij de enige reden is dat hier soms iemand reageert ;p

Als je daar je vragen stelt ga je sneller antwoord krijgen!

Naar boven Gelogd

amahoola
Gebruiker

Offline Offline

Berichten: 7


« Antwoord #4 Gepost op: 3 November 2020, 18:26:37 »

Hey Martientje,

Ik reageer hier enkel om te zeggen dat bijna niemand nog dit forum gebruikt. De meeste (oud-)leden zitten nu op deze chatgroep: http://www.game-maker.nl/forums/topic,86257.msg601966 (Link staat onderaan het eerste bericht)

Er is een bot in die chatgroep die ons op de hoogte brengt wanneer hier een nieuw bericht is geplaatst, wat volgens mij de enige reden is dat hier soms iemand reageert ;p

Als je daar je vragen stelt ga je sneller antwoord krijgen!

Can confirm, ik reageer door de bot in de GMChat.


c661130
Naar boven Gelogd

Advertenties
« vorige volgende »
Pagina's: [1]
Print


Topic Informatie
0 geregistreerde leden en 1 gast bekijken dit topic.

Ga naar:  

Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2020 Nederlandse Game Maker Community