Thursday, 8 April 2021

【GAMEMAKER】write text files that can be downloaded and processed

 Information about object: obj_get_from_net

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

//Next part sets path file and target
show_message("Getting Level");
file = http_get_file("https://gist.githubusercontent.com/edward1986/23eeafea5fe1f1652423bd52dba3f522/raw/33b0727256a2938528402f53a10ff8073577069b/level.txt",working_directory +"level1.txt");//save locally as level1.txt

str[0]="";//initiate array
done=false;//this will be used as a flag to detect if file is downloaded

//prevent pc hanging - assume failed after 10 seconds
alarm[0]=room_speed*10;
Alarm Event for alarm 0:
execute code:

show_message("Download Failed. Exiting");
file=-1;
game_end();
Step Event:
execute code:

if done room_goto(room_from_file);//when saved goto game rooom
Async Event: HTTP:
execute code:

if ds_map_find_value(async_load, "id") == file//sets up map
{
var status = ds_map_find_value(async_load, "status");//gets status
if status == 0//status 0 means file is finished downloading
{
show_message("Downloaded Level");
done=true;
}
}

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

///read lines to an array
lines=0;
var file=file_text_open_read("level1.txt");//open file for reading
while (!file_text_eof(file))//loops until end of file
{
str[lines] = file_text_read_string(file);
file_text_readln(file);
lines++;

}
file_text_close(file);//closes file


execute code:

///Read Characters and Create Objects
//size of grid
grid_size=32;

//create a loop for however many lines
for ( var loop = 0; loop < lines; loop += 1)
{
var line=(str[loop]);
line_width=string_length(line);
for (var position = 1; position <= line_width; position+= 1)
{
//check each position, create appropriate block
switch (string_char_at(line, position))
{
case "P":
instance_create(16+(position-1)*grid_size,16+loop*grid_size,obj_player);
break;
case "W":
instance_create(16+(position-1)*grid_size,16+loop*grid_size,obj_wall);
break;
case "L":
instance_create(16+(position-1)*grid_size,16+loop*grid_size,obj_lake);
break;
case "T":
instance_create(16+(position-1)*grid_size,16+loop*grid_size,obj_tree);
break;
case "B":
instance_create(16+(position-1)*grid_size,16+loop*grid_size,obj_bush);
break;
}
}
}

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



///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;
}
}
else
{
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;
}
}


Information about object: obj_wall
Sprite: spr_wall
Solid: true
Visible: true
Depth: 1
Persistent: false
Parent:
Children:
Mask:
No Physics Object

Information about object: obj_lake
Sprite: spr_lake
Solid: true
Visible: true
Depth: 1
Persistent: false
Parent:
Children:
Mask:
No Physics Object

Information about object: obj_tree
Sprite: spr_tree
Solid: true
Visible: true
Depth: 1
Persistent: false
Parent:
Children:
Mask:
No Physics Object

Information about object: obj_bush
Sprite: spr_bush
Solid: true
Visible: true
Depth: 1
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. ...