Sergidev commited on
Commit
edd627f
·
verified ·
1 Parent(s): 4bd6542

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +87 -0
app.py ADDED
@@ -0,0 +1,87 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from flask import Flask, render_template, request, jsonify
2
+ import json
3
+ import random
4
+ import os
5
+
6
+ app = Flask(__name__)
7
+
8
+ COINS_FILE = 'coins.json'
9
+ LEADERBOARD_FILE = 'leaderboard.json'
10
+
11
+ def load_coins():
12
+ if os.path.exists(COINS_FILE):
13
+ with open(COINS_FILE, 'r') as f:
14
+ return json.load(f)
15
+ return {"bronze": {"color": "#CD7F32", "price": 0, "value": 0.10, "winrate": 0.50}}
16
+
17
+ def save_coins(coins):
18
+ with open(COINS_FILE, 'w') as f:
19
+ json.dump(coins, f)
20
+
21
+ def load_leaderboard():
22
+ if os.path.exists(LEADERBOARD_FILE):
23
+ with open(LEADERBOARD_FILE, 'r') as f:
24
+ return json.load(f)
25
+ return []
26
+
27
+ def save_leaderboard(leaderboard):
28
+ with open(LEADERBOARD_FILE, 'w') as f:
29
+ json.dump(leaderboard, f)
30
+
31
+ @app.route('/')
32
+ def index():
33
+ coins = load_coins()
34
+ return render_template('index.html', coins=coins)
35
+
36
+ @app.route('/flip', methods=['POST'])
37
+ def flip():
38
+ data = request.json
39
+ coin = data['coin']
40
+ coins = load_coins()
41
+
42
+ if coin not in coins:
43
+ return jsonify({"error": "Invalid coin"}), 400
44
+
45
+ result = "heads" if random.random() < coins[coin]["winrate"] else "tails"
46
+ value = coins[coin]["value"] if result == "heads" else 0
47
+
48
+ return jsonify({"result": result, "value": value})
49
+
50
+ @app.route('/mint', methods=['POST'])
51
+ def mint():
52
+ coins = load_coins()
53
+ new_coin = generate_new_coin()
54
+ coins[new_coin["name"]] = new_coin
55
+ save_coins(coins)
56
+ return jsonify(new_coin)
57
+
58
+ @app.route('/leaderboard', methods=['GET', 'POST'])
59
+ def leaderboard():
60
+ if request.method == 'POST':
61
+ data = request.json
62
+ leaderboard = load_leaderboard()
63
+ leaderboard.append({"initials": data["initials"], "score": data["score"]})
64
+ leaderboard.sort(key=lambda x: x["score"], reverse=True)
65
+ leaderboard = leaderboard[:10] # Keep only top 10
66
+ save_leaderboard(leaderboard)
67
+ return jsonify({"status": "success"})
68
+ else:
69
+ return jsonify(load_leaderboard())
70
+
71
+ def generate_new_coin():
72
+ name = f"coin_{random.randint(1000, 9999)}"
73
+ color = "#{:06x}".format(random.randint(0, 0xFFFFFF))
74
+ winrate = random.uniform(0.3, 0.7)
75
+ value = random.uniform(0.05, 1.0)
76
+ price = int((winrate * value * 100) + random.uniform(-10, 10))
77
+
78
+ return {
79
+ "name": name,
80
+ "color": color,
81
+ "price": max(1, price),
82
+ "value": round(value, 2),
83
+ "winrate": round(winrate, 2)
84
+ }
85
+
86
+ if __name__ == '__main__':
87
+ app.run(debug=True)