Advertisement
Southclaw

Ren'Py Grid Movement Example

Dec 16th, 2013
199
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.57 KB | None | 0 0
  1. init:
  2.     python:
  3.  
  4.         # Constants
  5.  
  6.         MAP_SIZE_X = 4
  7.         MAP_SIZE_Y = 4
  8.  
  9.         BLOCK_TYPE_WALL     = 0x0
  10.         BLOCK_TYPE_FLOOR    = 0x1
  11.         BLOCK_TYPE_TRAP     = 0x2
  12.  
  13.         ENTITY_TYPE_HEALTH  = 0x0
  14.         ENTITY_TYPE_KEY     = 0x1
  15.         ENTITY_TYPE_BOMB    = 0x2
  16.  
  17.         # Map
  18.  
  19.         mapgrid = [
  20.             [0x1F, 0x1F, 0x1F, 0x1F], # - X
  21.             [0x1F, 0x0F, 0x0F, 0x1F], # The 4x4 block in the middle is a wall
  22.             [0x1F, 0x0F, 0x0F, 0x1F], # If you try and walk here, nothing will happen
  23.             [0x1F, 0x1F, 0x1F, 0x1F]
  24.             # |
  25.             # Y
  26.         ]
  27.  
  28.         def MapGrid_BlockType(x, y):
  29.             return (mapgrid[x][y] >> 4) & 0xF
  30.  
  31.         def MapGrid_Entity(x, y):
  32.             return mapgrid[x][y] & 0xF
  33.  
  34.         # Player
  35.  
  36.         ply_Name = "Bob"
  37.         ply_PosX = 3
  38.         ply_PosY = 3
  39.  
  40.  
  41. label start:
  42.  
  43.     jump MovementMenu
  44.  
  45.     return
  46.  
  47.  
  48. label MovementMenu:
  49.     menu:
  50.         "Move Forward":
  51.             jump MoveForward
  52.  
  53.         "Move Backward":
  54.             jump MoveBackward
  55.  
  56.         "Move Right":
  57.             jump MoveRight
  58.  
  59.         "Move Left":
  60.             jump MoveLeft
  61.  
  62.  
  63. label MoveForward:
  64.     python:
  65.         tmp_x = ply_PosX
  66.         tmp_y = ply_PosY - 1
  67.  
  68.         if tmp_y > -1:
  69.             block = MapGrid_BlockType(tmp_x, tmp_y)
  70.             entity = MapGrid_Entity(tmp_x, tmp_y)
  71.  
  72.             if block == BLOCK_TYPE_FLOOR:
  73.                 ply_PosY = tmp_y
  74.  
  75.     jump FinishMove
  76.  
  77.  
  78. label MoveBackward:
  79.     python:
  80.  
  81.         tmp_x = ply_PosX
  82.         tmp_y = ply_PosY + 1
  83.  
  84.         if tmp_y < MAP_SIZE_X:
  85.             block = MapGrid_BlockType(tmp_x, tmp_y)
  86.             entity = MapGrid_Entity(tmp_x, tmp_y)
  87.  
  88.             if block == BLOCK_TYPE_FLOOR:
  89.                 ply_PosY = tmp_y
  90.  
  91.     jump FinishMove
  92.  
  93.  
  94. label MoveRight:
  95.     python:
  96.  
  97.         tmp_x = ply_PosX + 1
  98.         tmp_y = ply_PosY
  99.  
  100.         if tmp_x < MAP_SIZE_X:
  101.             block = MapGrid_BlockType(tmp_x, tmp_y)
  102.             entity = MapGrid_Entity(tmp_x, tmp_y)
  103.  
  104.             if block == BLOCK_TYPE_FLOOR:
  105.                 ply_PosX = tmp_x
  106.  
  107.     jump FinishMove
  108.  
  109.  
  110. label MoveLeft:
  111.     python:
  112.  
  113.         tmp_x = ply_PosX - 1
  114.         tmp_y = ply_PosY
  115.  
  116.         if tmp_x > -1:
  117.             block = MapGrid_BlockType(tmp_x, tmp_y)
  118.             entity = MapGrid_Entity(tmp_x, tmp_y)
  119.  
  120.             if block == BLOCK_TYPE_FLOOR:
  121.                 ply_PosX = tmp_x
  122.  
  123.     jump FinishMove
  124.  
  125.  
  126. label FinishMove:
  127.  
  128.     "You are at grid: X = %(ply_PosX)d Y = %(ply_PosY)d"
  129.  
  130.     jump MovementMenu
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement