Tuesday, 13 April 2021

【GAMEMAKER】Simple Game Quest

 Information about object: obj_player

Sprite: spr_idle_down
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

///set up
enum player_state  {
    idle,
    up,
    down,
    left,
    right
    }
dir=player_state.down;
is_moving=false;
image_speed=0.5;

global.treasure=0;
Step Event:
execute code:


///keypress code
if (keyboard_check(vk_left))
{
    dir=player_state.left;
    is_moving=true;
}
else
if (keyboard_check(vk_right))
{
    dir=player_state.right;
    is_moving=true;
}
else
if (keyboard_check(vk_up))
{
    dir=player_state.up;
    is_moving=true;
}
else
if (keyboard_check(vk_down))
{
    dir=player_state.down;
    is_moving=true;
}
else
{
    is_moving=false;
}


execute code:

///movement
if is_moving
{
    switch (dir)
    {
        case player_state.up:
        y -= 4;
        break;

        case player_state.down:
        y += 4;
        break;

        case player_state.left:
        x -= 4;
        break;
   
        case player_state.right:
        x += 4;
        break;
    }
}


execute code:

///animation
if is_moving
{
    switch (dir)
    {
        case player_state.up:
        sprite_index=spr_walk_up;
        break;

        case player_state.down:
        sprite_index=spr_walk_down;
        break;

        case player_state.left:
        sprite_index=spr_walk_left;
        break;
   
        case player_state.right:
        sprite_index=spr_walk_right;
        break;
    }
}
if !is_moving
{
    switch (dir)
    {
        case player_state.up:
        sprite_index=spr_idle_up;
        break;

        case player_state.down:
        sprite_index=spr_idle_down;
        break;

        case player_state.left:
        sprite_index=spr_idle_left;
        break;
   
        case player_state.right:
        sprite_index=spr_idle_right;
        break;
    }
}

Collision Event with object obj_treasure:
execute code:

global.treasure++;
with (other) instance_destroy();
Draw Event:
execute code:

draw_self();
//draw treasure
draw_text(400,30,"Treasure "+string(global.treasure)+" / 5");

Information about object: obj_pirate
Sprite: spr_pirate
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

///Set Up text
is_touching=false;//used to check whether colliding with player
text="";//initial message state
show_text="";//start the typewriter text as ""
count=0;//location in show_text
pirate_text=ds_list_create();//create list for text

//add text to list
ds_list_add(pirate_text,
"You Need More Treasure",
"Come Back When You Have 5 Chests",
"Not Enough Treasure",
"It Will Cost More Than That",
"Not Enough",
"I Need More Treasure",
"I Charge More Than That",
"You'll Need 5 Chests",
"My Ship Costs More Than You Have");

Alarm Event for alarm 0:
execute code:

is_touching=false;
text="";
show_text="";
count=0;
Collision Event with object obj_player:
execute code:

if global.treasure<5
{
    if !is_touching
    {
        message=irandom(8);
        show_debug_message(message);
        is_touching=true;
        text=pirate_text[|message];
    }
    alarm[0]=room_speed*5; 
}
else
{
    room_goto(room_complete);
}
Other Event: Game End:
execute code:

ds_list_destroy(pirate_text);
Draw Event:
execute code:

///drawing stuff

draw_self();//draw self

///set text to draw
if(string_length(show_text) < string_length(text))
{
show_text = string_copy(text,1,count);
alarm[0] = room_speed*4;
count +=1;
}
if show_text!=""///draw bubble if text present
{
    padding=10;
    //set variables
    width =string_width(text) + padding * 2; // width of message, capped at max_width
    height = string_height(text) + padding * 2; 
    border_size=2;
    
    //draw bits below first to create a border
    //round rectangle first
    draw_set_colour(c_blue);
    draw_roundrect(x-(width/2)-border_size,
    y-90-(height/2)-border_size,x+(width/2)+border_size,y-90+(height/2)+border_size,false);
    
    //triangle outline for triangle
    draw_line_width(x-(width/4)+border_size,y-90+(height/2)-border_size,x+border_size,y-25,border_size);
    draw_line_width(x,y-25,x-(width/2),y-90+(height/2),border_size);
  
   //draw a the box
    draw_set_colour(c_white);
    draw_roundrect(x-(width/2),y-90-(height/2),x+(width/2),y-90+(height/2),false);
   //draw_triangle to make it look like speech bubble
    draw_triangle(
    x-(width/2)+2,y-90+(height/2),
    x-(width/4),y-90+(height/2),
    x,y-25,
    false);
   
    
    //draw a message
    draw_set_font(font_message);
    draw_set_halign(fa_center);
    draw_set_valign(fa_middle);
    draw_set_colour(c_black);
    draw_text(x,y-90,show_text);
}


Information about object: obj_treasure
Sprite: spr_treasure
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object

Information about object: obj_game_complete
Sprite:
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object
Create Event:
execute code:

alarm[0]=room_speed;
Alarm Event for alarm 0:
execute code:

alarm[0]=room_speed/3;

effect_create_above(ef_firework,irandom(room_width),irandom(room_height),choose(1,2),choose(c_red,c_green,c_yellow));
Draw Event:
execute code:

draw_set_colour(c_white);
draw_text(350,20,"You Did It!");
Information about object: obj_ship
Sprite: spr_ship
Solid: false
Visible: true
Depth: 0
Persistent: false
Parent:
Children:
Mask:
No Physics Object

No comments:

Post a Comment

BREAKING: North Carolina automotive group acquires 7 Upstate dealerships

Breaking news from GSA Business Report Click here to view this message in a browser window. ...