Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- class MyGame
- attr_gtk
- def tick
- state = args.state
- player = args.state.player
- labels = args.outputs.labels
- labels << { x: 0,
- y: 720,
- text: "playervars:" }
- labels << { x: 0,
- y: 700,
- text: "x,y,vx,vy,w,h: #{ player.x },#{ player.y },#{ player.vx },#{ player.vy },#{ player.w },#{ player.h }" }
- labels << { x: 0,
- y: 680,
- text: "runspeed,jumpspeed,collision: #{ player.runspeed },#{ player.jumpspeed },#{ player.collision }" }
- labels << { x: 0,
- y: 660,
- text: "statevars:" }
- labels << { x: 0,
- y: 640,
- text: "gravity: #{ state.gravity }" }
- labels << { x: 0,
- y: 620,
- text: "friction: #{ state.friction }" }
- labels << { x: 0,
- y: 600,
- text: "groundh: #{ state.groundh }" }
- initialise args
- renderthings args
- playermove args
- collide args
- end
- def initialise args
- player = args.state.player
- state = args.state
- player.x ||= 0
- player.y ||= 50
- player.vx ||= 0
- player.vy ||= 0
- player.w ||= 48
- player.h ||= 128
- player.right ||= 0
- player.runspeed ||= 1
- player.jumpspeed ||= 25
- player.collision ||= false
- state.gravity ||= 2
- state.friction ||= 1
- state.groundh ||= 50
- state.ground ||= [ 0, 0, 1280, 50, 0, 255, 0, 255 ]
- state.obstacle ||= [ 1000, 50, 64, 128, 'sprites/obstacle.png' ]
- state.obstaclel ||= 0
- end
- def renderthings args
- args.outputs.sprites << [ args.state.player.x, args.state.player.y, args.state.player.w, args.state.player.h, 'sprites/irisx4rs_idle.png' ]
- renderlevel args
- end
- def renderlevel args
- args.outputs.solids << args.state.ground
- args.outputs.sprites << args.state.obstacle
- end
- def pmove args
- key = args.inputs.keyboard
- player = args.state.player
- state = args.state
- end
- def playermove args
- key = args.inputs.keyboard
- player = args.state.player
- state = args.state
- if key.left
- player.vx -= player.runspeed
- elsif key.right
- player.vx += player.runspeed
- else
- if player.vx > 0
- player.vx -= state.friction
- elsif player.vx < 0
- player.vx += state.friction
- end
- end
- if player.vx >= 7
- player.vx = 7
- elsif player.vx <= -7
- player.vx = -7
- end
- player.x += player.vx
- if key.key_down.space
- if player.vy = 0 and player.y = state.ground[ 3 ] then
- player.vy += player.jumpspeed
- end
- end
- player.vy -= state.gravity
- player.y += player.vy
- if player.y < state.groundh
- player.y = state.groundh
- player.vy = 0
- end
- end
- def collide args
- player = args.state.player
- obstacle = args.state.obstacle
- state = args.state
- player.right = player.x + player.w
- player.rect = [ player.x, player.y, player.w, player.h ]
- obstaclel = obstacle[ 0 ] + obstacle[ 2 ]
- if player.rect.intersect_rect? obstacle
- player.collision = true
- if player.right = obstacle[ 0 ] and player.vx > 0
- player.vx = 0
- end
- if player.x = obstaclel and player.vx < 0
- player.vx = 0
- end
- end
- player.collision = false
- state.groundh = 50
- end
- end
- def tick args
- $game ||= MyGame.new
- $game.args = args
- $game.tick
- end
- $gtk.reset
Advertisement
Add Comment
Please, Sign In to add comment