File size: 3,297 Bytes
710118f 570a1ab edd627f bb94f94 edd627f 570a1ab 710118f edd627f bb94f94 710118f edd627f 710118f edd627f 710118f edd627f 710118f edd627f 710118f 570a1ab 710118f edd627f 710118f 570a1ab 710118f 570a1ab 710118f edd627f 710118f 570a1ab 710118f 570a1ab 710118f 570a1ab 710118f 570a1ab edd627f 710118f edd627f 710118f 570a1ab edd627f 710118f 570a1ab 710118f 570a1ab 710118f edd627f 570a1ab 710118f 570a1ab 710118f edd627f 710118f 570a1ab 710118f edd627f 570a1ab |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
from flask import Flask, render_template, jsonify, request
from flask import session
from flask_session import Session
import json
import random
import os
app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(24)
app.config['SESSION_TYPE'] = 'filesystem'
Session(app)
# Load coins from JSON file
def load_coins():
if not os.path.exists('coins.json'):
return [{"id": 1, "color": "#CD7F32", "price": 0, "value": 0.10, "winrate": 0.50}]
with open('coins.json', 'r') as f:
return json.load(f)
# Save coins to JSON file
def save_coins(coins):
with open('coins.json', 'w') as f:
json.dump(coins, f)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/api/coins')
def get_coins():
if 'coins' not in session:
session['coins'] = load_coins()
return jsonify(session['coins'])
@app.route('/api/flip', methods=['POST'])
def flip_coin():
data = request.json
coin_id = data['coinId']
if 'coins' not in session:
session['coins'] = load_coins()
coins = session['coins']
coin = next((c for c in coins if c['id'] == coin_id), None)
if coin and random.random() < coin['winrate']:
return jsonify({'result': 'heads', 'value': coin['value']})
else:
return jsonify({'result': 'tails', 'value': 0})
@app.route('/api/mint', methods=['POST'])
def mint_coin():
if 'coins' not in session:
session['coins'] = load_coins()
coins = session['coins']
new_id = max(coin['id'] for coin in coins) + 1
# More balanced algorithm for cost, price, and value
base_price = 4 + (new_id - 1) * 2 # Base price increases with each new coin
winrate = random.uniform(0.42, 0.98) # More balanced win rate
value = random.uniform(0.5, 1.5) * (base_price / 4) # Value scales with base price
price = int(base_price * (1 + random.uniform(-0.1, 0.1))) # Price varies slightly around base
new_coin = {
'id': new_id,
'color': f'#{random.randint(0, 0xFFFFFF):06x}',
'price': price,
'value': round(value, 2),
'winrate': round(winrate, 2)
}
coins.append(new_coin)
session['coins'] = coins
session.modified = True
save_coins(coins)
return jsonify(new_coin)
@app.route('/api/leaderboard', methods=['GET', 'POST'])
def leaderboard():
leaderboard_file = 'leaderboard.json'
if request.method == 'POST':
data = request.json
initials = data['initials']
score = data['score']
try:
with open(leaderboard_file, 'r') as f:
leaderboard = json.load(f)
except FileNotFoundError:
leaderboard = []
leaderboard.append({'initials': initials, 'score': score})
leaderboard.sort(key=lambda x: x['score'], reverse=True)
leaderboard = leaderboard[:10] # Keep only top 10
with open(leaderboard_file, 'w') as f:
json.dump(leaderboard, f)
return jsonify({'success': True})
else:
try:
with open(leaderboard_file, 'r') as f:
leaderboard = json.load(f)
except FileNotFoundError:
leaderboard = []
return jsonify(leaderboard)
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=7860)
|