예제 #1
0
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})
예제 #2
0
 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
예제 #3
0
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)
예제 #4
0
 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))
예제 #5
0
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'))
예제 #6
0
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')
예제 #7
0
    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
예제 #8
0
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)
예제 #9
0
def index():
    user = current_user
    logger.info(user)
    return render_template('index.html', title='Home', games=games)
예제 #10
0
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):
예제 #11
0
 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
예제 #12
0
 def set_password(self, password):
     self.password = generate_password_hash(password)
     logger.info('password reset')
예제 #13
0
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))
    
예제 #14
0
def page_logging(data):
    logger.info(data)
예제 #15
0
def ding(data):
    logger.info('ding')
    logger.info(current_user)
    logger.info(data)
예제 #16
0
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)