Initial Commit
This commit is contained in:
14
index.html
Normal file
14
index.html
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<html>
|
||||||
|
<head>
|
||||||
|
<link rel="stylesheet" href="index.css">
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body>
|
||||||
|
<h1>Blackjack</h1>
|
||||||
|
<button onclick="sendData('hit')">Hit</button>
|
||||||
|
<button onclick="sendData('stand')">Stand</button>
|
||||||
|
<button onclick="sendData('reset')">Reset</button>
|
||||||
|
<p id="response"></p>
|
||||||
|
</body>
|
||||||
|
<script src="index.js"></script>
|
||||||
|
</html>
|
||||||
16
index.js
Normal file
16
index.js
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
function sendData(data) {
|
||||||
|
fetch('http://localhost:5000/api/send', {
|
||||||
|
method: 'POST',
|
||||||
|
headers: {
|
||||||
|
'Content-Type': 'application/json'
|
||||||
|
},
|
||||||
|
body: JSON.stringify({ message: data })
|
||||||
|
})
|
||||||
|
.then(res => res.json())
|
||||||
|
.then(data => {
|
||||||
|
document.getElementById('response').innerText = data.reply;
|
||||||
|
})
|
||||||
|
.catch(err => console.error('Error:', err));
|
||||||
|
}
|
||||||
|
|
||||||
|
sendData("reset")
|
||||||
116
index.py
Normal file
116
index.py
Normal file
@@ -0,0 +1,116 @@
|
|||||||
|
from operator import mod
|
||||||
|
from tokenize import String
|
||||||
|
from flask import Flask, request, jsonify
|
||||||
|
from flask_cors import CORS
|
||||||
|
|
||||||
|
import random as r
|
||||||
|
import math as m
|
||||||
|
|
||||||
|
# Suit Order: Hearts, Diamonds, Spades, Clubs
|
||||||
|
# 37 = 9 * 4 + 1 = 9 of Hearts
|
||||||
|
drawn = []
|
||||||
|
drawnnames = []
|
||||||
|
cards = []
|
||||||
|
for i in range(52):
|
||||||
|
cards.append(i)
|
||||||
|
|
||||||
|
ranks = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 10, 10, 10]
|
||||||
|
ranknames = ["Ace", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Jack", "Queen", "King"]
|
||||||
|
suitnames = ["Hearts", "Diamonds", "Spades", "Clubs"]
|
||||||
|
gameDone = False
|
||||||
|
|
||||||
|
def toString(data):
|
||||||
|
str = ""
|
||||||
|
if len(data) == 1:
|
||||||
|
return data[0]
|
||||||
|
else:
|
||||||
|
for i in data:
|
||||||
|
if i != data[len(data)-1]:
|
||||||
|
str = str + i + ", "
|
||||||
|
else:
|
||||||
|
str = f"{str}and {i}"
|
||||||
|
return str
|
||||||
|
|
||||||
|
def getScore(data):
|
||||||
|
aces = 0
|
||||||
|
score = 0
|
||||||
|
for i in data:
|
||||||
|
if i == 1:
|
||||||
|
aces += 1
|
||||||
|
score += i
|
||||||
|
print(score)
|
||||||
|
while (aces > 0) & (score <= 11):
|
||||||
|
score += 10
|
||||||
|
aces -= 1
|
||||||
|
return score
|
||||||
|
|
||||||
|
def loseText(score):
|
||||||
|
if score <= 21:
|
||||||
|
return ""
|
||||||
|
else:
|
||||||
|
return "You have busted! Click reset to play again."
|
||||||
|
|
||||||
|
def botLose(data):
|
||||||
|
if getScore(data) > 21:
|
||||||
|
return "You won! Click reset to start another game."
|
||||||
|
else:
|
||||||
|
return "You lost. Click reset to start another game!"
|
||||||
|
|
||||||
|
app = Flask(__name__)
|
||||||
|
CORS(app)
|
||||||
|
@app.route('/api/send', methods=['POST'])
|
||||||
|
def receive_data():
|
||||||
|
data = request.get_json()
|
||||||
|
user_message = data.get('message', '')
|
||||||
|
|
||||||
|
|
||||||
|
global drawn
|
||||||
|
global cards
|
||||||
|
global drawnnames
|
||||||
|
global gameDone
|
||||||
|
if user_message == 'reset':
|
||||||
|
# Suit Order: Hearts, Diamonds, Spades, Clubs
|
||||||
|
# 37 = 9 * 4 + 1 = 9 of Hearts
|
||||||
|
drawn = []
|
||||||
|
drawnnames = []
|
||||||
|
cards = []
|
||||||
|
gameDone = False
|
||||||
|
for i in range(52):
|
||||||
|
cards.append(i)
|
||||||
|
return_message = "Game successfully reset"
|
||||||
|
elif user_message == 'hit':
|
||||||
|
if getScore(drawn) <= 21:
|
||||||
|
drawcard = cards[r.randint(0, len(cards)-1)]
|
||||||
|
cards.remove(drawcard)
|
||||||
|
drawrank = ranks[m.floor(drawcard/4)]
|
||||||
|
|
||||||
|
drawn.append(drawrank)
|
||||||
|
drawnnames.append(f"{ranknames[m.floor(drawcard/4)]} of {suitnames[drawcard % 4]}")
|
||||||
|
else:
|
||||||
|
gameDone = True
|
||||||
|
|
||||||
|
return_message = f"Your card is the {drawnnames[len(drawnnames)-1]}.\n\nYour cards so far are the {toString(drawnnames)}.\n\nYour current score is {getScore(drawn)}.\n\n{loseText(getScore(drawn))}"
|
||||||
|
elif user_message == 'stand':
|
||||||
|
if gameDone:
|
||||||
|
return_message = "The game is already done! Click reset to try again."
|
||||||
|
else:
|
||||||
|
botdrawn = []
|
||||||
|
botdrawnnames = []
|
||||||
|
while getScore(botdrawn) <= getScore(drawn):
|
||||||
|
drawcard = cards[r.randint(0, len(cards)-1)]
|
||||||
|
cards.remove(drawcard)
|
||||||
|
drawrank = ranks[m.floor(drawcard/4)]
|
||||||
|
|
||||||
|
botdrawn.append(drawrank)
|
||||||
|
botdrawnnames.append(f"{ranknames[m.floor(drawcard/4)]} of {suitnames[drawcard % 4]}")
|
||||||
|
|
||||||
|
return_message = f"Your score was {getScore(drawn)}.\n\nThe bot draw the {toString(botdrawnnames)}, obtaining a score of {getScore(botdrawn)}.\n\n{botLose(botdrawn)}"
|
||||||
|
gameDone = True
|
||||||
|
else:
|
||||||
|
return_message = user_message
|
||||||
|
|
||||||
|
print("Backend")
|
||||||
|
return jsonify({"reply": return_message})
|
||||||
|
|
||||||
|
if __name__ == '__main__':
|
||||||
|
app.run(debug=True)
|
||||||
Reference in New Issue
Block a user