windows
graphics
use vsync
keep aspect ratio
allow switching to fullscreen
importar la extensión desde el .zip que se han descargado con los recursos del taller
subdir para el jugador
spr_player_walk
spr_player_idle
spr_player_jump
spr_player_fall
spr_baddie
subdir para los items:
spr_gold
spr_potion_green
spr_explosion
spr_wall
spr_torch
spr_wall y spr_torch son los únicos que no tienen el origen centrado
bgm_music
sfx_jump
usar uncompressed
tiles
use as tileset; tile: horizontal; tile: vertical; tile width: 16; tile height: 16; 0; 0; 0; 0;
obj_genesiscreate: initialize vars*;
alarm 0: goto room level1;
* initialize vars
lives = 3;
score = 0;
alarm[0] = room_speed * 1;
obj_ctr_gamecreate: initialize camera*; play bgm_music(loop);
draw GUI: draw score(5, 5); draw lives(200, 5);
press : end the game;
* initialize camera
global._camera = ex_camera_create(0, obj_player);
ex_camera_set_zoom_scale(global._camera, 50);
ex_camera_set_bounds(global._camera, 0, 0, 1024, 320);
ex_camera_set_fade_alpha(global._camera, 1);
ex_camera_fade_in(global._camera, 60);
ex_camera_set_easing(global._camera, ease_out_quad);
ex_camera_set_safe_area(global._camera, 256);
obj_playercreate: initialize vars*;
alarm 0: lives--; if lives = 0 then goto room genesis else restart current room
step: update player*;
collision obj_baddie: sprite alpha = 0; stop bgm_music; alarm[0] = 5;
collision obj_gold_big: with other destroy(); set score 1,000,000
* initialize vars
image_speed_idle = 0.1;
image_speed_walk = 0.25;
image_speed_jump = 0;
image_speed_fall = 0;
image_speed = image_speed_idle;
dead = false;
grav = 0.5;
hsp = 0;
vsp = 0;
jumpspeed = 7;
movespeed = 3;
* update player
key_right = keyboard_check(ord("D")) * !dead;
key_left = -keyboard_check(ord("A")) * !dead;
key_jump = (keyboard_check(vk_space) || keyboard_check(ord("W"))) && !dead;
move = key_left + key_right;
hsp = move * movespeed;
if (vsp < 10) {
vsp += grav;
}
if (place_meeting(x, y + 1, obj_wall)) {
vsp = key_jump * -jumpspeed;
if (key_jump) {
audio_play_sound(sfx_jump, 1, false);
}
}
if (place_meeting(x + hsp, y, obj_wall)) {
while (!place_meeting(x + sign(hsp), y, obj_wall)) {
x += sign(hsp);
}
hsp = 0;
}
if (place_meeting(x, y + vsp, obj_wall)) {
while (!place_meeting(x, y + sign(vsp), obj_wall)) {
y += sign(vsp);
}
vsp = 0;
}
x += hsp;
y += vsp;
if (move != 0) {
image_xscale = move;
ex_camera_scroll_to(global._camera, move * 40, 0, 20);
}
if (place_meeting(x, y + 1, obj_wall)) {
if (hsp != 0) {
sprite_index = spr_player_walk;
image_speed = image_speed_walk;
} else {
sprite_index = spr_player_idle;
image_speed = image_speed_idle;
}
} else {
if (vsp < 0) {
sprite_index = spr_player_jump;
image_speed = image_speed_jump;
} else {
sprite_index = spr_player_fall;
image_speed = image_speed_fall;
}
}
obj_baddiecreate: initialize vars*;
step: update enemy*;
* initialize vars
hp = 1;
image_speed = 0.25;
grav = 0.5;
hsp = 0;
vsp = 0;
movespeed = 2;
dir = -1;
fear_of_heights = false;
* update enemy
hsp = dir * movespeed;
if (vsp < 10) {
vsp += grav;
}
if (place_meeting(x + hsp, y, obj_wall)) {
while (!place_meeting(x + sign(hsp), y, obj_wall)) {
x += sign(hsp);
}
dir *= -1;
hsp = 0;
}
if (place_meeting(x, y + vsp, obj_wall)) {
while (!place_meeting(x, y + sign(vsp), obj_wall)) {
y += sign(vsp);
}
vsp = 0;
if (fear_of_heights && !position_meeting(x + (8 * dir), y + 16, obj_wall)) {
dir *= -1;
}
}
x += hsp;
y += vsp;
if (dir != 0) {
image_xscale = dir;
}
obj_baddie_nofallcreate: call inherited event; fear_of_heights = true;
obj_wallnothing here... :sad:
obj_torchcreate: image_speed = 0.2;
obj_goldcreate: grav = 0.5; vsp = 0;
step: update*;
* update
if (vsp < 10) {
vsp += grav;
}
if (place_meeting(x, y + vsp, obj_wall)) {
while (!place_meeting(x, y + sign(vsp), obj_wall)) {
y += sign(vsp);
}
vsp = 0;
}
y += vsp;
settings
width: 1024
height: 320
speed: 30
backgrounds
draw background color: #000000
visible when room starts
views
enable
visible when room starts
view
0, 0
320, 240
port
0, 0
640, 480
objects
obj_genesis
settings
width: 1024
height: 320
speed: 30
backgrounds
draw background color: #55CCFF
visible when room starts
views
enable
visible when room starts
view
0, 80
320, 240
port
0, 0
640, 480
follow
obj_player
tiles
objects