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)