Advertisement
Guest User

RDM 9 backend example

a guest
Oct 26th, 2022
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.51 KB | None | 0 0
  1. import flask
  2. import json
  3. import math
  4. from flask import request, jsonify, render_template
  5.  
  6. app = flask.Flask(__name__) # creating an instance of the Flask class
  7.  
  8. app.config['SEND_FILE_MAX_AGE_DEFAULT'] = 0
  9.  
  10. dungeon1 = [
  11. "#######",
  12. "#.....#",
  13. "#.###.#",
  14. "#.#G#.#",
  15. "#.#.#.#",
  16. "#.#...#",
  17. "#@#####"]
  18.  
  19. dungeon2 = [
  20. "##########",
  21. "#.....####",
  22. "#.###x##.#",
  23. "#.#G#.##x#",
  24. "#.#.#....#",
  25. "#x..#x##x#",
  26. "#####.####",
  27. "##.......#",
  28. "#.x#.###x#",
  29. "####@#####"]
  30.  
  31. gameOn = False
  32. playerDir  = "up"
  33. playerDir2 = "up"
  34. playerPos  = [6,1]
  35. playerPos2 = [9,4]
  36. playerHP   = 5
  37.  
  38. def movePos(pos,dir):
  39.   if dir == "up":
  40.     return [pos[0]-1,pos[1]]
  41.   if dir == "left":
  42.     return [pos[0],pos[1]-1]
  43.   if dir == "right":
  44.     return [pos[0],pos[1]+1]
  45.   if dir == "down":
  46.     return [pos[0]+1,pos[1]]
  47.  
  48. def initGame():
  49.   global playerDir
  50.   global playerDir2
  51.   global playerPos
  52.   global playerPos2
  53.   global playerHP
  54.   global gameOn
  55.   gameOn = True
  56.   playerDir  = "up"
  57.   playerDir2 = "up"
  58.   playerPos  = [6,1]
  59.   playerPos2 = [9,4]
  60.   playerHP = 5
  61.  
  62. def initGameHard():
  63.   global playerDir
  64.   global playerDir2
  65.   global playerPos
  66.   global playerPos2
  67.   global playerHP
  68.   global gameOn
  69.   gameOn = True
  70.   playerDir  = "up"
  71.   playerDir2 = "up"
  72.   playerPos  = [9,4]
  73.   playerHP = 5
  74.  
  75. def play(dungeon,move):
  76.   global playerDir
  77.   global playerPos
  78.   global playerHP
  79.   global gameOn
  80.   steppables = [".","@","G","x"]
  81.   if move == "forward":
  82.     newPos = movePos(playerPos,playerDir)
  83.     if newPos[0] < 0 or newPos[1] < 0 or newPos[0] >= len(dungeon) or newPos[1] >= len(dungeon[0]):
  84.       return "You give up trying to find the treasure and leave the maze."
  85.     if dungeon[newPos[0]][newPos[1]] in steppables:
  86.       playerPos = newPos
  87.     if dungeon[playerPos[0]][playerPos[1]] == "G":
  88.       gameOn = False
  89.       return "You found the treasure!"
  90.     elif dungeon[playerPos[0]][playerPos[1]] == "x" and playerHP > 0:
  91.       playerHP -= 1
  92.       if playerHP == 0:
  93.           gameOn = False
  94.           return "You died."
  95.       return "You step on a trap!"
  96.   elif move == "left":
  97.     if playerDir == "up":
  98.       playerDir = "left"
  99.     elif playerDir == "left":
  100.       playerDir = "down"
  101.     elif playerDir == "down":
  102.       playerDir = "right"
  103.     elif playerDir == "right":
  104.       playerDir = "up"
  105.   elif move == "right":
  106.     if playerDir == "up":
  107.       playerDir = "right"
  108.     elif playerDir == "left":
  109.       playerDir = "up"
  110.     elif playerDir == "down":
  111.       playerDir = "left"
  112.     elif playerDir == "right":
  113.       playerDir = "down"
  114.   else:
  115.     "Error."
  116.   nextPos = movePos(playerPos,playerDir)
  117.   if nextPos[0] < 0 or nextPos[1] < 0 or nextPos[0] >= len(dungeon) or nextPos[1] >= len(dungeon[0]):
  118.     return "You see the exit to the dungeon."
  119.   if dungeon[nextPos[0]][nextPos[1]] == "." or dungeon[nextPos[0]][nextPos[1]] == "@" or dungeon[nextPos[0]][nextPos[1]] == "x":
  120.     return "You see a corridor."
  121.   if dungeon[nextPos[0]][nextPos[1]] == "#":
  122.     return "You see a wall."
  123.   if dungeon[nextPos[0]][nextPos[1]] == "G":
  124.     return "You see the treasure."
  125.   return "Error."
  126.  
  127. @app.route('/calculator')
  128. def calc():
  129.     return render_template("index.html")
  130.  
  131. @app.route('/game')
  132. def game():
  133.     return render_template("game.html")
  134.  
  135. @app.route('/api/start')
  136. def start():
  137.     initGame()
  138.     return jsonify({"Message": "You find yourself in a dungeon. You remember coming here to look for a hidden treasure in the maze."})
  139.  
  140. @app.route('/api/startHard')
  141. def startHard():
  142.     initGameHard()
  143.     return jsonify({"Message": "You find yourself in a dungeon. You remember coming here to look for a hidden treasure in the maze.",
  144.                     "Hitpoints":playerHP})
  145.  
  146. @app.route('/api/play', methods = ['POST'])
  147. def playTurn():
  148.     global dungeon1
  149.     global gameOn
  150.     if not gameOn:
  151.         return jsonify({"Message":"Error."})
  152.     dungeon = dungeon1
  153.     print(request)
  154.     data = request.get_json()
  155.     print(data)
  156.     move = data['move']
  157.     result = play(dungeon,move)
  158.     return jsonify({"Message":result})
  159.  
  160. @app.route('/api/playHard', methods = ['POST'])
  161. def playTurnHard():
  162.     global dungeon2
  163.     global playerHP
  164.     global gameOn
  165.     if not gameOn:
  166.         return jsonify({"Message":"The game is not started."})
  167.     dungeon = dungeon2
  168.     data = request.get_json()
  169.     move = data['move']
  170.     result = play(dungeon,move)
  171.     return jsonify({"Message":result,"Hitpoints":playerHP, "pos":playerPos})
  172.  
  173.  
  174. if __name__ == '__main__':
  175.     app.run(debug=True, host='0.0.0.0', port= 8080)
  176.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement