Bugs correction
This commit is contained in:
parent
3b8e28b4f3
commit
350283959f
2
.gitignore
vendored
2
.gitignore
vendored
@ -27,6 +27,8 @@ venv.bak/
|
||||
|
||||
# Secret configuration
|
||||
settings.cfg
|
||||
settings.py
|
||||
*.sqlite
|
||||
|
||||
# Personal conf
|
||||
static/jquery.js
|
||||
|
11
app.py
Normal file
11
app.py
Normal file
@ -0,0 +1,11 @@
|
||||
import os
|
||||
import sys
|
||||
here = os.path.dirname(os.path.abspath(__file__))
|
||||
os.chdir(here)
|
||||
sys.path.insert(0,here+'/venv/lib/python{}.{}/site-packages'.format(sys.version_info.major, sys.version_info.minor))
|
||||
sys.path.insert(0,here)
|
||||
|
||||
import settings
|
||||
from belote import app, socketio
|
||||
socketio.run(app, debug=False, host=settings.PUBLIC_URL, port=8080)
|
||||
|
@ -8,6 +8,7 @@ import datetime
|
||||
from db import db, User, Game, Player, levels_users
|
||||
from belote_jeu import N_TURN, N_PLAYERS
|
||||
import belote_ws
|
||||
import settings
|
||||
|
||||
login_manager = fll.LoginManager()
|
||||
|
||||
@ -19,7 +20,7 @@ app.config.from_pyfile('settings.cfg')
|
||||
#######################################################################
|
||||
|
||||
# SocketIO
|
||||
socketio = SocketIO(app)
|
||||
socketio = SocketIO(app, cors_allowed_origins=settings.PUBLIC_URL)
|
||||
login_manager.init_app(app)
|
||||
|
||||
# Database management
|
||||
@ -362,5 +363,5 @@ def delete_game(user=None, game=None):
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
socketio.run(app, debug=True, host='127.0.0.1')
|
||||
socketio.run(app, debug=True, host='127.0.0.1', port=8080 )
|
||||
|
||||
|
@ -20,7 +20,7 @@ class CustomNamespacePlay(fio.Namespace):
|
||||
if len(self.users)==1:
|
||||
fio.emit('text', {'text': '{} est là !'.format(self.users[0]), 'username':None, 'name':NAME_BONJOUR})
|
||||
elif len(self.users)>1:
|
||||
fio.emit('text', {'text': '{} est là !'.format(', '.join(self.users)), 'username':None, 'name':NAME_BONJOUR})
|
||||
fio.emit('text', {'text': '{} sont là !'.format(', '.join(self.users)), 'username':None, 'name':NAME_BONJOUR})
|
||||
self.users.append(current_user.name)
|
||||
fio.emit('text', {'text': '{} vient d\'arriver !'.format(current_user.name), 'username':None, 'name':NAME_BONJOUR}, broadcast=True)
|
||||
pass
|
||||
@ -28,7 +28,7 @@ class CustomNamespacePlay(fio.Namespace):
|
||||
def on_disconnect(self):
|
||||
if current_user.name in self.users:
|
||||
self.users.remove(current_user.name)
|
||||
fio.emit('text', {'text': '{} est parti.'.format(current_user.name), 'username':None, 'name':NAME_BONJOUR}, broadcast=True)
|
||||
fio.emit('text', {'text': '{} est parti.e.'.format(current_user.name), 'username':None, 'name':NAME_BONJOUR}, broadcast=True)
|
||||
pass
|
||||
|
||||
def on_join(self, data):
|
||||
@ -69,7 +69,7 @@ class CustomNamespacePlay(fio.Namespace):
|
||||
card = data['card']
|
||||
|
||||
game = self.game()
|
||||
if game.turn<0:
|
||||
if game.turn<0 or game.atout is None or game.atout =='':
|
||||
fio.emit('text', {'text': "Jeu pas encore disponible. Il faut choisir l'atout !", 'username':None, 'name':NAME_ARBITRE})
|
||||
return
|
||||
# C'est mon tour ?
|
||||
@ -99,7 +99,7 @@ class CustomNamespacePlay(fio.Namespace):
|
||||
def on_restart(self, data):
|
||||
game = self.game()
|
||||
if game.isadmin(current_user):
|
||||
if game.turn==N_TURN*N_PLAYERS:
|
||||
if game.turn==N_TURN*N_PLAYERS or (game.turn==0 and (game.atout is None or game.atout == '')):
|
||||
game.restart_jeu()
|
||||
fio.emit('restart', game.serialize_state_anonymous(), broadcast=True)
|
||||
else:
|
||||
|
9
db.py
9
db.py
@ -53,11 +53,11 @@ class Game(db.Model):
|
||||
|
||||
id = db.Column(db.Integer,
|
||||
primary_key=True)
|
||||
name = db.Column(db.String(100))
|
||||
name = db.Column(db.String(200))
|
||||
players = relationship("Player")
|
||||
turn = db.Column(db.Integer, default=-8)
|
||||
atout = db.Column(db.String(1))
|
||||
preneur = db.Column(db.Integer)
|
||||
preneur = db.Column(db.String(100))
|
||||
admin = db.Column(db.String(100), db.ForeignKey('users.login'))
|
||||
cards_to_distribute = db.Column(db.String(200))
|
||||
first_player = db.Column(db.Integer)
|
||||
@ -305,7 +305,7 @@ class Game(db.Model):
|
||||
return False, -1
|
||||
|
||||
def restart_jeu(self):
|
||||
if self.turn==N_TURN*N_PLAYERS:
|
||||
if (self.turn==0 and (self.atout=='' or self.atout is None)) or self.turn==N_TURN*N_PLAYERS:
|
||||
self.turn = -8
|
||||
self.atout = None
|
||||
self.preneur = None
|
||||
@ -315,7 +315,8 @@ class Game(db.Model):
|
||||
self.cumul_1 += self.points_1
|
||||
self.points_0 = 0
|
||||
self.points_1 = 0
|
||||
self.partie +=1
|
||||
if self.turn>0:
|
||||
self.partie +=1
|
||||
self.first_player = 0
|
||||
self.distribute()
|
||||
db.session.commit()
|
||||
|
3
settings.example.py
Normal file
3
settings.example.py
Normal file
@ -0,0 +1,3 @@
|
||||
# The public url for preventing
|
||||
# Cross_origin bugs
|
||||
PUBLIC_URL='127.0.0.1'
|
@ -270,11 +270,13 @@ position: absolute;
|
||||
#a-vous {
|
||||
float: left;
|
||||
width: 90px;
|
||||
height: 79px;
|
||||
height: 59px;
|
||||
padding-top: 20px;
|
||||
text-align: center;
|
||||
margin-right: 20px;
|
||||
visibility: hidden;
|
||||
background:white;
|
||||
font-weight: bold;
|
||||
}
|
||||
#points {
|
||||
height: 98px;
|
||||
|
BIN
static/favicon.ico
Normal file
BIN
static/favicon.ico
Normal file
Binary file not shown.
After Width: | Height: | Size: 489 KiB |
@ -43,16 +43,16 @@ var set_atout = function(){
|
||||
var coulprop = jeu['played'][0];
|
||||
$('#atout').html(`<img src="/static/cards/${coulprop}.png" width=100% />`);
|
||||
if (jeu['turn']<-4 && (jeu['turn']+jeu['first_player']+8)%4 == jeu['nr']){
|
||||
$('#prispar').html(`<input type="submit" onclick="javascript:choixcouleur('${coulprop[1]}')" value="Prendre" />`);
|
||||
$('#preneur').html(`<input type="submit" onclick="javascript:choixcouleur(null)" value="Passer" />`);
|
||||
$('#preneur').html(`<input type="submit" onclick="javascript:choixcouleur('${coulprop[1]}')" value="Prendre" />`);
|
||||
$('#prispar').html(`<input type="submit" onclick="javascript:choixcouleur(null)" value="Passer" />`);
|
||||
}else if((jeu['turn']+jeu['first_player']+8)%4 == jeu['nr']){
|
||||
$('#prispar').html(`<input type="submit" onclick="javascript:choixcouleur('P')" value="Pique" />
|
||||
$('#preneur').html(`<input type="submit" onclick="javascript:choixcouleur('P')" value="Pique" />
|
||||
<input type="submit" onclick="javascript:choixcouleur('C')" value="Coeur" />
|
||||
<br />
|
||||
<input type="submit" onclick="javascript:choixcouleur('T')" value="Trèfle" />
|
||||
<input type="submit" onclick="javascript:choixcouleur('F')" value="Carreau" />
|
||||
`);
|
||||
$('#preneur').html(`<input type="submit" onclick="javascript:choixcouleur(null)" value="Passer" />`);
|
||||
$('#prispar').html(`<input type="submit" onclick="javascript:choixcouleur(null)" value="Passer" />`);
|
||||
}else{
|
||||
$('#prispar').html(`Pris par`);
|
||||
$('#preneur').html(`----`);
|
||||
@ -92,7 +92,7 @@ var set_jeu = function(){
|
||||
console.log(jeu['monjeu']);
|
||||
|
||||
for(i=0;i<jeu['monjeu'].length;i++){
|
||||
if (jeu['monjeu'][i]==null){
|
||||
if (jeu['monjeu'][i]==null || jeu['monjeu'][i]==''){
|
||||
$('#carte-'+i).html('');
|
||||
}else{
|
||||
$('#carte-'+i).html(`<a href="javascript:jouer('${jeu['monjeu'][i]}', ${i})"><img src="/static/cards/${jeu['monjeu'][i]}.png" width=100% /></a>`);
|
||||
@ -102,14 +102,14 @@ var set_jeu = function(){
|
||||
|
||||
var set_cartes = function(){
|
||||
first_player = jeu['first_player']
|
||||
if (jeu['turn']%4==0 && 'lastfirstplayer' in jeu){
|
||||
if (jeu['turn']%4==0 && 'lastfirstplayer' in jeu && jeu['turn']>0){
|
||||
first_player = jeu['lastfirstplayer']
|
||||
}
|
||||
if (jeu['preneur'] == null){
|
||||
if (jeu['atout'] == null || jeu['atout']==''){
|
||||
$('#jeu-0').html('');
|
||||
$('#jeu-1').html('');
|
||||
$('#jeu-2').html('');
|
||||
$('#jeu-3').html('');
|
||||
$('#jeu-4').html('');
|
||||
}else{
|
||||
for(i=first_player;i<first_player+4;i++){
|
||||
j = i-first_player
|
||||
@ -124,7 +124,7 @@ var set_cartes = function(){
|
||||
}
|
||||
|
||||
var set_derpli = function(){
|
||||
if(jeu['last_played'].length >0){
|
||||
if(jeu['last_played'].length >0 && jeu['turn']>0){
|
||||
for(i=0;i<4;i++){
|
||||
$('#der-pli-'+i).html(`<img src="/static/cards/${jeu['last_played'][i]}.png" width=100% />`);
|
||||
}
|
||||
@ -140,9 +140,11 @@ var set_players = function(){
|
||||
var set_current_player = function(){
|
||||
for(i=0;i<4;i++){
|
||||
$('#joueur-'+i).css('font-weight', 'normal');
|
||||
$('#joueur-'+i).css('text-decoration', 'none');
|
||||
}
|
||||
i = (jeu['turn']+jeu['first_player']+8)%4;
|
||||
$('#joueur-'+i).css('font-weight', 'bold');
|
||||
$('#joueur-'+i).css('text-decoration', 'underline overline');
|
||||
if((jeu['turn']+jeu['first_player']+8)%4 == jeu['nr']){
|
||||
$('#a-vous').css('visibility', 'visible');
|
||||
}else{
|
||||
@ -152,6 +154,9 @@ var set_current_player = function(){
|
||||
if(jeu['turn']==32 && jeu['admin']==jeu['players'][jeu['nr']]){
|
||||
$('#suivant').show();
|
||||
}
|
||||
if(jeu['turn']==0 && (jeu['atout'] == null||jeu['atout']=='') && jeu['admin']==jeu['players'][jeu['nr']]){
|
||||
$('#suivant').show();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -166,9 +171,6 @@ set_derpli();
|
||||
set_players();
|
||||
set_current_player();
|
||||
|
||||
for (e in jeu){
|
||||
$('#jeu').append(`${e} : ${jeu[e]} <br />`)
|
||||
}
|
||||
if((jeu['turn']+jeu['first_player'] + 8)%4 == jeu['nr']){
|
||||
$('#a-vous').css('visibility', 'visible');
|
||||
}
|
||||
@ -252,6 +254,10 @@ socket.on('play', function(data){
|
||||
set_current_player();
|
||||
});
|
||||
|
||||
socket.on('disconnect', function() {
|
||||
$('#chat').prepend('<b>Souci technique</b> : Vous avez été déconnecté<br />Une tentative de reconnexion va avoir lieu<br />');
|
||||
setTimeout(function(){window.location.reload()}, 5000);
|
||||
});
|
||||
|
||||
$('#texte-msg').pressEnter(function(e){
|
||||
sendtext();
|
||||
|
BIN
static/logo.gif
BIN
static/logo.gif
Binary file not shown.
Before Width: | Height: | Size: 849 B |
BIN
static/logo.png
Normal file
BIN
static/logo.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 5.0 KiB |
@ -1,6 +1,7 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
|
||||
<link rel="shortcut icon" href="/static/favicon.ico">
|
||||
{% include ['head-perso.html', 'head.html'] %}
|
||||
{% block head %}
|
||||
<title>{% block title %}{% endblock %} - Belote</title>
|
||||
@ -11,7 +12,7 @@
|
||||
<!-- ENTETE -->
|
||||
<div id="entete" class="clearfix-head">
|
||||
<div id="logo">
|
||||
<img src="/static/logo.gif" />
|
||||
<img src="/static/logo.png" height=100% width=100% />
|
||||
</div><!-- logo -->
|
||||
<div id="titre">
|
||||
{% block titre %} {% endblock %}
|
||||
|
@ -8,9 +8,9 @@
|
||||
<div id="jeu-1" class="carte"></div><!-- jeu-1 -->
|
||||
<div id="jeu-2" class="carte"></div><!-- jeu-2 -->
|
||||
<div id="jeu-3" class="carte"></div><!-- jeu-3 -->
|
||||
<form id="suivant">
|
||||
<div id="suivant">
|
||||
<input type="submit" name="suivant" value="Recommencer" onclick="javascript:restart_jeu()">
|
||||
</form><!-- suivant -->
|
||||
</div><!-- suivant -->
|
||||
</div><!-- plateau -->
|
||||
<div id="ov">
|
||||
<table id="table-atout">
|
||||
@ -40,7 +40,7 @@
|
||||
</div><!-- choix -->
|
||||
</div><!-- ov -->
|
||||
<div id="jeu-en-main" class="clearfix">
|
||||
<div id="a-vous">A vous de jouer !
|
||||
<div id="a-vous">À vous de jouer !
|
||||
</div>
|
||||
<div id="carte-0" class="carte carte-en-main">
|
||||
</div>
|
||||
|
@ -6,7 +6,9 @@
|
||||
|
||||
{% block contenu %}
|
||||
<div id="zone-de-contenu">
|
||||
<p> Bienvenue sur le jeu de belote !</p>
|
||||
<p> Vous devez vous identifier pour jouer, rendez vous sur <a href="/login">la page de login</a></p>
|
||||
<fieldset class="fieldset"><legend style="font-size:25px;">Bienvenue</legend>
|
||||
<p> Bienvenue sur le jeu de belote !</p>
|
||||
<p> Vous devez vous identifier pour jouer, rendez vous sur <a href="/login">la page de login</a></p>
|
||||
</fieldset>
|
||||
</div>
|
||||
{% endblock %}
|
||||
|
Loading…
Reference in New Issue
Block a user