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

 1 
 Gepost op: Gisteren om 16:14:11 
Gestart door Martientje - Laatste bericht door Martientje
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.

 2 
 Gepost op: 29 Oktober 2020, 15:47:55 
Gestart door Martientje - Laatste bericht door massimot
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!

 3 
 Gepost op: 29 Oktober 2020, 15:34:22 
Gestart door Martientje - Laatste bericht door massimot
Hoi Martientje,

Je eerste code klopt niet helemaal denk ik...
Je zegt namelijk stepCounter++ (dus je telt er 1 bij op)
Vervolgens controleer je of die groter is dan 20. Is dat niet zo, dan zet je hem weer op 0? Ik vermoed dat als hij groter dan 20 is geweest, dat je hem dan pas op 0 wilt zetten.

Overigens begrijp ik ook niet waarom je Alarm0 elke 15 steps uitvoert?

 4 
 Gepost op: 29 Oktober 2020, 15:30:14 
Gestart door Martientje - Laatste bericht door massimot
Hoi Martientje, ik heb het vermoeden dat je tweede probleem niet door deze code komt, maar door andere code (die je niet hebt meegestuurd...)

 5 
 Gepost op: 28 Oktober 2020, 00:11:53 
Gestart door Martientje - Laatste bericht door Martientje
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!

 6 
 Gepost op: 24 Oktober 2020, 22:50:04 
Gestart door Martientje - Laatste bericht door Martientje
Hey iedereen,
daar ben ik weer eens. Nog weer een vraag over mijn snake spel. Ik probeer een o_Bird het laatste gedeelte (de tail) van o_Snake op te laten eten als o_Snake langs o_Bird loopt. Maar dit lukt me niet. Is er iemand die mij kan helpen? Hieronder staat de code die ik gebruik.

step event van o_Bird

GML:
/// @description Insert description here
// You can write your code in this editor
/// @description Insert description here
// You can write your code in this editor
//0 = up y -
//1 = right x +
//2 = down y +
//3 = left x -

if (directionFacing == 0 && place_meeting(x,y-32,o_Snake))
{
stepCounter ++;
if stepCounter > 20
{
with(tail)
{
instance_destroy();
global.length -=1;
if global.length <=1
{
show_message("You have been eaten");
room_restart();
}
}
}
stepCounter = 0;
}



if (directionFacing == 1 && place_meeting(x+32,y,o_Snake))
{
stepCounter ++;
if stepCounter > 20
{
with(tail)
{
instance_destroy();
global.length -=1;
if global.length <=1
{
show_message("You have been eaten");
room_restart();
}
}
}
stepCounter = 0;
}



if (directionFacing == 2 && place_meeting(x,y+32,o_Snake))
{
stepCounter ++;
if stepCounter > 20
{
with(tail)
{
instance_destroy();
global.length -=1;
if global.length <=1
{
show_message("You have been eaten");
room_restart();
}
}
}
stepCounter = 0;
}



if (directionFacing == 3 && place_meeting(x-32,y,o_Snake))
{
stepCounter ++;
if stepCounter > 20
{
with(tail)
{
instance_destroy();
global.length -=1;
if global.length <=1
{
show_message("You have been eaten");
room_restart();
}
}
}
stepCounter = 0;
}




alarm[0] event van o_Snake

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:
tail = instance_create_layer(x + 32, y, "Layer1", o_Snake);
break;
case 1:
tail = instance_create_layer(x - 32, y, "Layer1", o_Snake);
break;
case 2:
tail = instance_create_layer(x, y - 32, "Layer1", o_Snake);
break;
case 3:
tail = instance_create_layer(x, y + 32, "Layer1", o_Snake);
break;
}
}
else if (currentID == (global.length -1))
{
instance_destroy();
}
else
{
currentID +=1;
alarm[0] = 15;
}


Alvast bedankt!

 7 
 Gepost op: 6 Oktober 2020, 21:25:33 
Gestart door Martientje - Laatste bericht door Martientje
oke, de titel is een beetje vaag.
Mijn probleem is dat de o_Snake op een richting kan worden gezet terwijl dat niet zou moeten ivm een botsing met o_Wall. Je kunt dus bijvoorbeeld de richting naar rechts instellen ookal staat daar een o_Wall. Daardoor komt de slang vast te staan, dit hoort niet. Als je geen legale beweging kunt maken moet de o_Snake doorgaan op het pad dat hij aan het afleggen was.
Ik gebruik de volgende code, wat heb ik over het hoofd gezien?

GML:
if (keyboard_check_pressed(vk_right) && global.dir !=1)
{
if place_meeting(x+32,y,o_Wall) || place_meeting(x+32,y,o_OuterWall)
{
exit;
}
else
{
global.dir = 0;
o_Snake.alarm[0] = 15;
}
}
if (keyboard_check_pressed(vk_left) && global.dir !=0)
{
if place_meeting(x-32,y,o_Wall) || place_meeting(x-32,y,o_OuterWall)
{
exit;
}
else
{
global.dir = 1;
o_Snake.alarm[0] = 15;
}
}
if (keyboard_check_pressed(vk_up) && global.dir !=3)
{
if place_meeting(x,y-32,o_Wall) || place_meeting(x,y-32,o_OuterWall)
{
exit;
}
else
{
global.dir = 2;
o_Snake.alarm[0] = 15;
}
}
if (keyboard_check_pressed(vk_down) && global.dir !=2)
{
if place_meeting(x,y+32,o_Wall) || place_meeting(x,y+32,o_OuterWall)
{
exit;
}
else
{
global.dir = 3;
o_Snake.alarm[0] = 15;
}
}

alvast bedankt!

Oke, ik heb eindelijk door wat ik verkeerd aan het doen was (ik was gisteren laat aan het werken en dan ben ik niet meer zo scherp), ik sprak de code vanuit het verkeerde object aan.
Nu werkt de code in principe wel, alleen laat hij stukje slang achter. Ik denk dat ik er uiteindelijk misschien wel uit kom, maar als iemand al ziet waar ik het verkeerd doe laat het me dan aub weten. Alvast bedankt voor jullie hulp! Ik heb de code wel wat aangepast (zie hieronder)

GML:
//Code werkt opzich goed alleen een raar probleem dat stukjes slang achterblijven

//o_Snake step event

/// @description Insert description here
// You can write your code in this editor
//check if there would be a collision when te next head is created


// direction
// 0 = right +
// 1 = left -
// 2 = up -
// 3 = down +

if (keyboard_check_pressed(vk_right) && global.dir !=1 && currentID == 0)
{
if place_meeting(x+32,y,o_Wall) || place_meeting(x+32,y,o_OuterWall)
{
global.dir = global.previousdir;
}
else
{

{
global.dir = 0;
global.previousdir = global.dir;
alarm[0] = 15;
}
}
}
if (keyboard_check_pressed(vk_left) && global.dir !=0 && currentID == 0)
{
if place_meeting(x-32,y,o_Wall) || place_meeting(x-32,y,o_OuterWall)
{
global.dir = global.previousdir;
}
else
{

{
global.dir = 1;
global.previousdir = global.dir;
alarm[0] = 15;
}
}
}
if (keyboard_check_pressed(vk_up) && global.dir !=3 && currentID == 0)
{
if place_meeting(x,y-32,o_Wall) || place_meeting(x,y-32,o_OuterWall)
{
global.dir = global.previousdir;
}
else
{

{
global.dir = 2;
global.previousdir = global.dir;
alarm[0] = 15;
}
}
}
if (keyboard_check_pressed(vk_down) && global.dir !=2 && currentID == 0)
{
if place_meeting(x,y+32,o_Wall) || place_meeting(x,y+32,o_OuterWall)
{
global.dir = global.previousdir;
}
else
{

{
global.dir = 3;
global.previousdir = global.dir;
alarm[0] = 15;
}
}
}




if (global.dir == 0 && currentID == 0)
{
if place_meeting(x+32,y,o_Wall) || place_meeting(x+32,y,o_OuterWall)
{
o_Snake.alarm[0]=-1;
}
}

if (global.dir == 1 && currentID == 0)
{
if place_meeting(x-32,y,o_Wall) || place_meeting(x-32,y,o_OuterWall)
{
o_Snake.alarm[0]=-1;
}
}
if (global.dir == 2 && currentID == 0)
{
if place_meeting(x,y-32,o_Wall) || place_meeting(x,y-32,o_OuterWall)
{
o_Snake.alarm[0]=-1;
}
}
if (global.dir == 3 && currentID == 0)
{
if place_meeting(x,y+32,o_Wall) || place_meeting(x,y+32,o_OuterWall)
{
o_Snake.alarm[0]=-1;
}
}


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

 9 
 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

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

Pagina's: [1] 2 3 ... 10 >
Powered by SMF 1.1.21 | SMF © 2006-2007, Simple Machines
www.game-maker.nl © 2003-2020 Nederlandse Game Maker Community