diff options
Diffstat (limited to 'v3.html')
| -rwxr-xr-x | v3.html | 501 |
1 files changed, 501 insertions, 0 deletions
@@ -0,0 +1,501 @@ +<!doctype html> +<html> +<head> +<title></title> +<style type="text/css"> +body + { + background-color: #fff; + padding: 0; margin: 0; + } +#playground + { + } +#hud + { + font-family: sans-serif; + position: fixed; + top: 10px; + right: 10px; + width: 300px; + font-size: 14px + padding: 5px; + opacity: 0.7; + color: #000; + background: #fff; + z-index: 666; + } +</style> +</head> +<body> + +<div id="playground"> +</div> + +<div id="hud"></div> + +</body> +<script type="text/javascript" src="/js/jquery.js"></script> +<script type="text/javascript" src="jquery.gamequery-0.5.1.js"></script> +<script type="text/javascript"> +var PLAYGROUND_WIDTH = $(window).width() // 900 +var PLAYGROUND_HEIGHT = $(window).height() // 600 +var REFRESH_RATE = 30 + +$(function () + { + var KEY_LEFT = 37 + var KEY_UP = 38 + var KEY_RIGHT = 39 + var KEY_DOWN = 40 + var KEYTRACK = + { + KEY_LEFT: false, + KEY_UP: false, + KEY_RIGHT: false, + KEY_DOWN: false, + } + var IDLE = 0 + var RUNNING = 1 + var JUMPING = 2 + var RUNNING_AND_JUMPING = 3 + var SWIMMING = 4 + var DIVING = 5 + + var RIGHT = 0 + var LEFT = 1 + + var DUDE_STATE = + { + IDLE_RIGHT: 0, + IDLE_LEFT: 1, + RUN_RIGHT: 2, + RUN_LEFT: 3, + JUMPING_RIGHT: 4, + JUMPING_LEFT: 5, + RUNNING_AND_JUMPING_RIGHT: 6, + RUNNING_AND_JUMPING_LEFT: 7, + } + + $("#playground").playground({height: PLAYGROUND_HEIGHT, width: PLAYGROUND_WIDTH, refreshRate: REFRESH_RATE, keyTracker: false}) + + function update_animation (sprite, actor) + { + new_state = actor.activity * 2 + actor.orientation + if (actor.state === new_state) + return + old_anim = actor.animations[actor.state] + new_anim = actor.animations[new_state] + actor.state = new_state + dude.y += new_anim.deltaY - old_anim.deltaY + dude.x += new_anim.deltaX - old_anim.deltaX + sprite.setAnimation(new_anim.animation) + .width(new_anim.width) + .height(new_anim.height) + .css("top", sprite.position().top + new_anim.deltaY - old_anim.deltaY) + .css("left", sprite.position().left + new_anim.deltaX - old_anim.deltaX) + } + var stage = + { + x: 0, + y: 0, + sea_distance: 2000, + scroll: function () + { + $("#sand").css({"left": stage.x}) + $("#sea").css({"left": stage.sea_distance + stage.x}) + }, + } + var FLOOR_HEIGHT = 115 + var sky = new $.gameQuery.Animation({imageURL: "./sky.png"}) + var sand = new $.gameQuery.Animation({imageURL: "./sand.png"}) + var sea = new $.gameQuery.Animation({imageURL: "./sea.png"}) + $.playground() + .addSprite( "sky", + { + posx: 0, + posy: 0, + width: PLAYGROUND_WIDTH, + height: PLAYGROUND_HEIGHT, + animation: sky, + }) + .addSprite( "sand", + { + posx: 0, + posy: PLAYGROUND_HEIGHT - FLOOR_HEIGHT, + width: stage.sea_distance, + height: FLOOR_HEIGHT, + animation: sand, + }) + .addSprite( "sea", + { + posx: stage.sea_distance, + posy: PLAYGROUND_HEIGHT - FLOOR_HEIGHT, + width: PLAYGROUND_WIDTH, + height: FLOOR_HEIGHT, + animation: sea, + }) + .addGroup("actors").end() + $("#sceengraph").css("background-color", "#88dddd") + + MAX_YSPEED = 10 + RUN_SPEED = 10 + GRAVITY = 1 + TERMINAL_VELOCITY = 10 + JUMP_POWER = 10 + + FLOOR_DEPTH = 30 + DUDE_WIDTH = 140 + DUDE_HEIGHT = 231 + DUDE_START_X = 250 + DUDE_START_Y = PLAYGROUND_HEIGHT - DUDE_HEIGHT - FLOOR_HEIGHT + FLOOR_DEPTH + TERMINAL_VELOCITY + var dude = + { + state: DUDE_STATE.IDLE_RIGHT, + activity: IDLE, + orientation: RIGHT, + can_jump: true, + running_while_jumping: true, + xspeed: 0, + yspeed: 0, + x: DUDE_START_X, + y: DUDE_START_Y, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-10, + animations: + [ + // IDLE + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manstandingsprite.png", + numberOfFrame: 8, + delta: DUDE_HEIGHT-2, + rate: REFRESH_RATE*1.5, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-20, + }, + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manstandingsprite_left.png", + numberOfFrame: 8, + delta: DUDE_HEIGHT-2, + rate: REFRESH_RATE*1.5, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-20, + }, + // RUNNING + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manrunningsprite.png", + numberOfFrame: 15, + delta: 226, + rate: REFRESH_RATE*1, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: 140, + height: 214, + }, + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manrunningsprite_left.png", + numberOfFrame: 15, + delta: 226, + rate: REFRESH_RATE*1, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: 140, + height: 214, + }, + // JUMPING + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manstandingsprite.png", + numberOfFrame: 8, + delta: DUDE_HEIGHT-2, + rate: REFRESH_RATE*1.5, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-20, + }, + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manstandingsprite_left.png", + numberOfFrame: 8, + delta: DUDE_HEIGHT-2, + rate: REFRESH_RATE*1.5, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-20, + }, + // RUNNING AND JUMPING + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manstandingsprite.png", + numberOfFrame: 8, + delta: DUDE_HEIGHT-2, + rate: REFRESH_RATE*1.5, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-20, + }, + { + animation: new $.gameQuery.Animation( + { + imageURL: "sprites/manstandingsprite_left.png", + numberOfFrame: 8, + delta: DUDE_HEIGHT-2, + rate: REFRESH_RATE*1.5, + type: $.gameQuery.ANIMATION_VERTICAL | $.gameQuery.ANIMATION_CALLBACK + }), + deltaX: 0, + deltaY: 0, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-20, + }, + ], + } + $("#actors").addSprite("dude", + { + posx: DUDE_START_X, + posy: DUDE_START_Y, + width: DUDE_WIDTH, + height: DUDE_HEIGHT-20, + animation: dude.animations[0].animation, + geometry: $.gameQuery.GEOMETRY_RECTANGLE, + // callback: animate, + }) + $("#dude").data("actor", dude) + + $(window).bind("blur", function (e) + { + $.each(KEYTRACK, function (k,v) { KEYTRACK[k] = false }) + }) + $(document).bind("keydown", function (e) + { + KEYTRACK[e.keyCode] = true + switch (e.keyCode) + { + case KEY_RIGHT: + dude.orientation = RIGHT + break + case KEY_LEFT: + dude.orientation = LEFT + break + case KEY_UP: + break + case KEY_DOWN: + break + } + }) + $(document).bind("keyup", function (e) + { + KEYTRACK[e.keyCode] = false + switch (e.keyCode) + { + case KEY_RIGHT: + break + case KEY_LEFT: + break + case KEY_UP: + break + case KEY_DOWN: + break + } + }) + + WATER_LINE = 10000 + function actor_has_landed (actor) + { + if (actor.x < WATER_LINE) + return (actor.y + actor.height) > (PLAYGROUND_HEIGHT - FLOOR_HEIGHT + FLOOR_DEPTH - TERMINAL_VELOCITY) + else + return true + } + $.playground().registerCallback( function () + { + switch (dude.activity) + { + case IDLE: + dude.can_jump = true + if (KEYTRACK[KEY_UP]) + { + dude.yspeed -= JUMP_POWER + dude.activity = JUMPING + } + else if (KEYTRACK[KEY_LEFT]) + { + dude.xspeed = -1 * RUN_SPEED + dude.activity = RUNNING + } + else if (KEYTRACK[KEY_RIGHT]) + { + dude.xspeed = RUN_SPEED + dude.activity = RUNNING + } + break + case RUNNING: + if (KEYTRACK[KEY_UP]) + { + dude.yspeed -= JUMP_POWER + dude.activity = RUNNING_AND_JUMPING + } + else if (KEYTRACK[KEY_LEFT]) + { + dude.orientation = LEFT + dude.xspeed = -1 * RUN_SPEED + if (dude.x <= -dude.width + 80) + dude.x = PLAYGROUND_WIDTH + } + else if (KEYTRACK[KEY_RIGHT]) + { + dude.orientation = RIGHT + dude.xspeed = RUN_SPEED + if (dude.x >= PLAYGROUND_WIDTH) + dude.x = -dude.width + } + else + { + dude.activity = IDLE + dude.xspeed = 0 + } + break + case JUMPING: + dude.yspeed = dude.yspeed + GRAVITY + if (dude.yspeed > TERMINAL_VELOCITY) + dude.yspeed = TERMINAL_VELOCITY + if (actor_has_landed(dude)) + { + dude.xspeed = 0 + dude.yspeed = 0 + dude.activity = IDLE + } + else if (KEYTRACK[KEY_LEFT]) + { + dude.activity = RUNNING_AND_JUMPING + dude.xspeed = -1 * RUN_SPEED + } + else if (KEYTRACK[KEY_RIGHT]) + { + dude.activity = RUNNING_AND_JUMPING + dude.xspeed = RUN_SPEED + } + break + case RUNNING_AND_JUMPING: + dude.yspeed = dude.yspeed + GRAVITY + if (dude.yspeed > TERMINAL_VELOCITY) + dude.yspeed = TERMINAL_VELOCITY + if (actor_has_landed(dude)) + { + dude.yspeed = 0 + if (KEYTRACK[KEY_UP]) + dude.yspeed -= JUMP_POWER + else + dude.activity = RUNNING + } + else if (KEYTRACK[KEY_LEFT]) + { + dude.xspeed = -1 * RUN_SPEED + dude.orientation = LEFT + dude.activity = RUNNING_AND_JUMPING + if (dude.x <= -dude.width + 80) + dude.x = PLAYGROUND_WIDTH + } + else if (KEYTRACK[KEY_RIGHT]) + { + dude.xspeed = RUN_SPEED + dude.orientation = RIGHT + dude.activity = RUNNING_AND_JUMPING + if (dude.x >= PLAYGROUND_WIDTH) + dude.x = -dude.width + } + else + { + dude.activity = JUMPING + } + break + } + + if (stage.x === 0) + { + if (KEYTRACK[KEY_LEFT] || dude.x < 310) + dude.x += dude.xspeed + else + { + stage.x -= dude.xspeed + if (stage.x > 0) + stage.x = 0 + } + if (dude.x < 0) + { + dude.x = 0 + dude.activity = IDLE + } + } + else if (stage.x > -1* (stage.sea_distance - 550)) // || dude.orientation === LEFT) + { + stage.x -= dude.xspeed + } + else + { + dude.x += dude.xspeed + if (dude.x > 400) + { + dude.x = 400 + if (dude.activity === JUMPING) + { + } + else if (dude.activity === RUNNING_AND_JUMPING) + { + dude.activity = JUMPING + } + else + dude.activity = IDLE + } + else if (dude.x < 350) + stage.x -= dude.xspeed + } + dude.y += dude.yspeed + $("#dude").css({"top": dude.y, "left": dude.x}) + update_animation($("#dude"), dude) + stage.scroll () + $("#hud").html( + [ + "dude @ ", dude.x, " ", dude.y, "<br/>", + "stage @ ", stage.x, " ", stage.y, "<br/>", + ].join(" ")) + }, REFRESH_RATE) + $.playground().startGame(function () + { + }) + }) + +</script> +</html> |
