first working prototype

This commit is contained in:
Jakub Senderák
2020-04-21 13:36:09 +02:00
parent a43a7c4881
commit d657dedf5f
4 changed files with 226 additions and 0 deletions
+50
View File
@@ -1,9 +1,59 @@
from api import app
from bridzik import Bridzik, Card, Card_colors, Card_values, BridzikException
import json
from flask import render_template, url_for, flash, redirect
from api.forms import GuessForm, PlayForm
b = Bridzik()
b.add_player_guess(0, 1)
b.add_player_guess(1, 1)
b.add_player_guess(2, 1)
b.add_player_guess(3, 2)
# b.play_card(3, b.get_status(3)['player_cards'][0])
@app.route('/bridzik_api/get_status/<id>')
def get_status(id: int):
return json.dumps(b.get_status(int(id)), cls=Card.JSONEncoder)
@app.route('/bridzik/<player>/status')
def status(player):
player = int(player)
game_status = b.get_status(player)
if b.is_completed() or b.series[-1].get_last_round().get_active_player() != player:
return render_template('status.html', status=game_status)
elif not b.series[-1].get_last_round().is_guessing_completed():
form = GuessForm(max_guess= 8 - b.series[-1].get_last_round().round_number)
return render_template('status.html', status=game_status, player=player, action='guess', form=form)
else:
player_cards = b.series[-1].get_last_round().player_cards[player]
form = PlayForm()
form.card.choices = [(str(c), str(c)) for c in player_cards]
return render_template('status.html', status=game_status, player=player, action='play', form=form)
@app.route('/bridzik/<player>/guess', methods=['POST'])
def guess(player):
player = int(player)
form = GuessForm()
try:
b.add_player_guess(player, int(form.guess.data))
except BridzikException:
flash('Nie je možné zadať tip.')
return redirect(url_for('status', player=player))
@app.route('/bridzik/<player>/play_card', methods=['POST'])
def play_card(player):
player = int(player)
player_cards = b.series[-1].get_last_round().player_cards[player]
form = PlayForm()
form.card.choices = [(str(c), str(c)) for c in player_cards]
color, value = form.card.data.split('_')
try:
card = Card(Card_colors[color], Card_values[value])
except KeyError:
flash('Chyba. Opakuj pokus znovu.')
try:
b.play_card(player, card)
except BridzikException:
flash('Nie je možné zahrať kartu.')
return redirect(url_for('status', player=player))