Lilianaria

Untitled

May 27th, 2025
266
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Ruby 3.42 KB | None | 0 0
  1. class MyGame
  2.   attr_gtk
  3.  
  4.   def tick
  5.     state = args.state
  6.     player = args.state.player
  7.     labels = args.outputs.labels
  8.     labels << { x: 0,
  9.                 y: 720,
  10.                 text: "playervars:" }
  11.     labels << { x: 0,
  12.                 y: 700,
  13.                 text: "x,y,vx,vy,w,h: #{ player.x },#{ player.y },#{ player.vx },#{ player.vy },#{ player.w },#{ player.h }" }
  14.     labels << { x: 0,
  15.                 y: 680,
  16.                 text: "runspeed,jumpspeed,collision: #{ player.runspeed },#{ player.jumpspeed },#{ player.collision }" }
  17.     labels << { x: 0,
  18.                 y: 660,
  19.                 text: "statevars:" }
  20.     labels << { x: 0,
  21.                 y: 640,
  22.                 text: "gravity: #{ state.gravity }" }
  23.     labels << { x: 0,
  24.                 y: 620,
  25.                 text: "friction: #{ state.friction }" }
  26.     labels << { x: 0,
  27.                 y: 600,
  28.                 text: "groundh: #{ state.groundh }" }
  29.     initialise args
  30.     renderthings args
  31.     playermove args
  32.     collide args
  33.   end
  34.   def initialise args
  35.     player = args.state.player
  36.     state = args.state
  37.     player.x         ||= 0
  38.     player.y         ||= 50
  39.     player.vx        ||= 0
  40.     player.vy        ||= 0
  41.     player.w         ||= 48
  42.     player.h         ||= 128
  43.     player.right     ||= 0
  44.     player.runspeed  ||= 1
  45.     player.jumpspeed ||= 25
  46.     player.collision ||= false
  47.     state.gravity    ||= 2
  48.     state.friction   ||= 1
  49.     state.groundh    ||= 50
  50.     state.ground     ||= [ 0, 0, 1280, 50, 0, 255, 0, 255 ]
  51.     state.obstacle   ||= [ 1000, 50, 64, 128, 'sprites/obstacle.png' ]
  52.     state.obstaclel  ||= 0
  53.   end
  54.   def renderthings args
  55.     args.outputs.sprites << [ args.state.player.x, args.state.player.y, args.state.player.w, args.state.player.h, 'sprites/irisx4rs_idle.png' ]
  56.     renderlevel args
  57.   end
  58.   def renderlevel args
  59.     args.outputs.solids  << args.state.ground
  60.     args.outputs.sprites << args.state.obstacle
  61.   end
  62.   def pmove args
  63.     key = args.inputs.keyboard
  64.     player = args.state.player
  65.     state = args.state
  66.  
  67.   end
  68.   def playermove args
  69.     key = args.inputs.keyboard
  70.     player = args.state.player
  71.     state = args.state
  72.     if key.left
  73.       player.vx -= player.runspeed
  74.     elsif key.right
  75.       player.vx += player.runspeed
  76.     else
  77.       if player.vx > 0
  78.         player.vx -= state.friction
  79.       elsif player.vx < 0
  80.         player.vx += state.friction
  81.       end
  82.     end
  83.     if player.vx >= 7
  84.       player.vx = 7
  85.     elsif player.vx <= -7
  86.       player.vx = -7
  87.     end
  88.     player.x += player.vx
  89.  
  90.     if key.key_down.space
  91.       if player.vy = 0 and player.y = state.ground[ 3 ] then
  92.         player.vy += player.jumpspeed
  93.       end
  94.     end
  95.     player.vy -= state.gravity
  96.     player.y += player.vy
  97.     if player.y < state.groundh
  98.       player.y = state.groundh
  99.       player.vy = 0
  100.     end
  101.   end
  102.   def collide args
  103.     player = args.state.player
  104.     obstacle = args.state.obstacle
  105.     state = args.state
  106.     player.right = player.x + player.w
  107.     player.rect = [ player.x, player.y, player.w, player.h ]
  108.     obstaclel = obstacle[ 0 ] + obstacle[ 2 ]
  109.     if player.rect.intersect_rect? obstacle
  110.       player.collision = true
  111.       if player.right = obstacle[ 0 ] and player.vx > 0
  112.         player.vx = 0
  113.       end
  114.       if player.x = obstaclel and player.vx < 0
  115.         player.vx = 0
  116.       end
  117.     end
  118.     player.collision = false
  119.     state.groundh = 50
  120.   end
  121. end
  122.  
  123. def tick args
  124.   $game ||= MyGame.new
  125.   $game.args = args
  126.   $game.tick
  127. end
  128. $gtk.reset
Advertisement
Add Comment
Please, Sign In to add comment