Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import asyncio
- import json
- import math
- import random
- import sys
- import os
- import bullet_classes
- import player_classes
- import time
- from quart import Quart, websocket, render_template
- from functools import wraps
- Players = [player_classes.Hill()]
- clientIds = []
- playerNumber = 0
- connected = set()
- ids = []
- def collect_websocket(func):
- @wraps(func)
- async def wrapper(*args, **kwargs):
- global connected
- connected.add(websocket._get_current_object())
- clientIds.append(player_classes.ID(websocket._get_current_object(), 0))
- for IDS in clientIds:
- if(IDS.ws == websocket._get_current_object()):
- ids.append(str(IDS.id))
- try:
- return await func(*args, **kwargs)
- finally:
- for Player in Players:
- if(Player.id != 1):
- if(Player.id != 50):
- if(Player.ws == websocket):
- connected.remove(websocket._get_current_object())
- Player.alive = 0
- for ID in clientIds:
- clientIds.remove(ID)
- return wrapper
- app = Quart(__name__)
- @app.route("/")
- async def index():
- return await render_template('index.html')
- @app.websocket('/ws')
- @collect_websocket
- async def ws():
- global connected
- global rData
- while True:
- PlayerData = {}
- for Player in Players:
- if(Player.id > 50):
- PlayerData['playerx' + str(Player.id)] = Player.x
- PlayerData['playery' + str(Player.id)] = Player.y
- PlayerData['playera' + str(Player.id)] = int(Player.angle)
- PlayerData['playerstat' + str(Player.id)] = Player.alive
- if(Player.id != 1):
- if(Player.id != 50):
- if(Player.alive == 0):
- Players.remove(Player)
- for ID in clientIds:
- PlayerData['id'] = str(clientIds[len(clientIds) - 1].id)
- PlayerData['players'] = ids
- PlayerJsonData = json.dumps(PlayerData)
- await websocket.send(PlayerJsonData)
- recivedData = await websocket.receive()
- rData = json.loads(recivedData)
- for ID in clientIds:
- if(rData['id'] == str(ID.id)):
- if(ID.IG == 0):
- if(rData['playerstat'] == 1):
- Players.append(player_classes.Basic(-1300, -1300, ID.ws, ID.id, 1))
- ID.IG = 1
- for Player in Players:
- for Player2 in Players:
- if(Player.id > 50):
- Player.detect_collide(Player2)
- if(rData['id'] == str(Player.id)):
- if(rData['direction'] == "up"):
- Player.accelerate(rData['direction'])
- Player.moveUp(Player2)
- if(rData['direction'] == "left"):
- Player.accelerate(rData['direction'])
- Player.moveLeft(Player2)
- if(rData['direction'] == "down"):
- Player.accelerate(rData['direction'])
- Player.moveDown(Player2)
- if(rData['direction'] == "right"):
- Player.accelerate(rData['direction'])
- Player.moveRight(Player2)
- if(rData['direction'] == "none"):
- Player.decelerate(rData['direction'])
- if(rData['id'] == str(Player.id)):
- if(rData['shootq'] == 1):
- Players.append(bullet_classes.basicBullet(Player.x, Player.y, Player.angle, Player.id + 100))
- if(Player.id == 1):
- Player.fire()
- if __name__ == '__main__':
- app.run(host='0.0.0.0', port=os.environ.get('PORT', '5000'))
Add Comment
Please, Sign In to add comment