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)
| | |-+  snake niet van richting laten veranderen als er een muur staat
Pagina's: [1]
« vorige volgende »
Print
Advertenties

Martientje
Gebruiker

Offline Offline

Berichten: 101


« Gepost op: 6 Oktober 2020, 21:25:33 »

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;
}
}


« Laatste verandering: 7 Oktober 2020, 17:01:21 door Martientje »
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