def say_game_ready(actual_game): actual_game.set_next_player() areready = [p for p in actual_game.list_players() if actual_game.players[p].ready==True] logger.info('are ready {0}'.format(areready)) if len(areready)==2: logger.info('both ready, playing') socketio.emit('game_on', {'name':actual_game.players_turn})
def opponent(self,id): opp = [p for p in self.players.keys() if p is not id] if len(opp) == 0: return "no player yet" else: from app.database import get_user_from_id o_id = opp[0] opp = get_user_from_id(o_id) logger.info('got opponent id {0} and object {1}'.format(o_id,opp)) return opp.name
def ready(data): logger.info(current_user) logger.info(data) id = current_user.id name = current_user.name game = data['game'] actual_game = get_game_from_id(game) if actual_game is not None: actual_game.players[id].ready = True socketio.emit('player_ready', {'name':name}) say_game_ready(actual_game)
def __init__(self): self.players = {} self.player_limit = 2 self.players_turn = None self.first_joined = None self.rows = 10 self.columns = 10 self.stage_number = Game.SETUP self.id = str(uuid.uuid4()) self.border_spacing = 2 self.cell_size = 25 logger.info('created game {0}'.format(self.id))
def game(id): games_ids = [g.id for g in games] logger.info('games {0} testing {1} is {2}'.format(games_ids, id, id in games_ids)) if id in games_ids: index = games_ids.index(id) game = games[index] if not game.is_player(current_user.id) and game.can_join(): if game.join(current_user.id): logger.info('player {0} has joined {1}'.format( current_user.id, id)) page_out = render_template('game.html', game=game, player=current_user) #logger.info(page_out) return page_out else: return redirect(url_for('index'))
class LoginForm(FlaskForm): username = StringField('Username', validators=[DataRequired()]) if Config.NOPASSWORD_CHECK: password = PasswordField('Password') else: password = PasswordField('Password', validators=[DataRequired()]) remember_me = BooleanField('Remember Me') submit = SubmitField('Sign In') logger.info('created form')
def join(self,player_id): ok = None if player_id not in self.players: if len(self.players.keys())==self.player_limit: ok=False else: from app.database import get_user_from_id self.players[player_id] = GamePlayer(get_user_from_id(player_id)) self.players[player_id].my_board = self.generate_blank_board('you') self.players[player_id].their_board = self.generate_blank_board('them') ok=True if self.first_joined is None: self.first_joined = self.players[player_id].user.name if len(self.players.keys())==self.player_limit: self.players_turn = self.first_joined else: ok = False if ok: logger.info('going to emit now') socketio.emit('joined', {'id':player_id}) return ok
def login(): if current_user.is_authenticated: return redirect(url_for('index')) form = LoginForm() if form.validate_on_submit(): ##flash('login requested fir user {0}, remember me={1}'.format(form.username.data, form.remember_me.data)) user = None if form.username.data in [u.name for u in users]: user = get_user_from_name(form.username.data) logger.info('found user {0}'.format(user)) if user is None or not user.check_password(form.password.data): logger.info('found user {0} and {1} ({2})'.format( user, user.check_password(form.password.data), form.password.data)) flash('invalid user name or password') return redirect(url_for('index')) login_user(user, remember=form.remember_me.data) next_page = request.args.get('next') logger.debug('next page {0}'.format(next_page)) if not next_page or url_parse(next_page).netloc != '': #checks to see if the next is tampered with to got outside next_page = url_for('index') return redirect(next_page) return render_template('login.html', title='Sign In', form=form)
def index(): user = current_user logger.info(user) return render_template('index.html', title='Home', games=games)
from app.models import Player, Game from app.logconfig import logger users = [] users.append(Player('robin', 'nobby')) users.append(Player('nobby', 'robin')) games = [Game(), Game()] logger.info('ceated default users and 2 games') def get_game_from_id(game_id): game_out = None if game_id in [g.id for g in games]: game_out = [g for g in games if g.id == game_id][0] return game_out def get_user_from_id(user_id): user = None if user_id in [u.id for u in users]: user = [u for u in users if u.id == user_id][0] return user def get_user_from_name(name):
def check_password(self, password): ok = check_password_hash(self.password, password) logger.info('password check {0}'.format(ok)) return ok or Config.NOPASSWORD_CHECK
def set_password(self, password): self.password = generate_password_hash(password) logger.info('password reset')
def boat_moved(boat_game_user): logger.info('boat_moved') logger.info(current_user) logger.info(boat_game_user) updated_boat = boat_game_user['boat'] user_id = boat_game_user['user'] user = get_user_from_id(user_id) boat_name = updated_boat['name'] game_id = boat_game_user['game'] actual_game = get_game_from_id(game_id) boat_object = None boats = actual_game.get_boats(current_user.id) board = actual_game.get_board(current_user.id) logger.info(boats) logger.info(updated_boat) logger.info(user) boat_object = [b for b in boats if b.name==boat_name][0] logger.info(boat_object) new_placing = False illegal = False if boat_object.c==-1: new_placing = True # check for overlaps for bc in boats: if updated_boat['name']!=bc.name: for tr in range(updated_boat['r'],updated_boat['r']+updated_boat['height']): for tc in range(updated_boat['c'],updated_boat['c']+updated_boat['width']): #logger.info('checking updated boat c{0}r{1}'.format(tc,tr)) for bctr in range(bc.r,bc.r+bc.height): for bctc in range(bc.c,bc.c+bc.width): #logger.info('checking test boat c{0}r{1}'.format(bctc,bctr)) if (bctc==tc and bctr==tr) or tr<0 or tc<0 or tr>=actual_game.rows or tc>=actual_game.columns: illegal = True logger.debug('checking updated boat c{0}r{1} and c{2}r{3} '.format(tc,tr,bctc,bctr)) break if not illegal: updated_boat['illegal']=0 for k in vars(boat_object).keys(): logger.info('{0} with {1}'.format(k,updated_boat[k])) if k in updated_boat: setattr(boat_object,k,updated_boat[k]) else: logger.info('setting boat bck to illegal for definite') setattr(boat_object,'illegal', 1) logger.info(boat_object) socketio.emit('update_boat', str(boat_object), room='{0}_{1}'.format(current_user.id,game_id))
def page_logging(data): logger.info(data)
def ding(data): logger.info('ding') logger.info(current_user) logger.info(data)
def on_join(game_id): join_room(current_user.id+'_'+game_id) logger.info('joining room {0}_{1}'.format(current_user.id,game_id)) actual_game = get_game_from_id(game_id) say_game_ready(actual_game)