Sergidev commited on
Commit
710118f
·
verified ·
1 Parent(s): b70190b

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +64 -59
app.py CHANGED
@@ -1,87 +1,92 @@
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)
 
1
+ from flask import Flask, render_template, jsonify, request
2
  import json
3
  import random
 
4
 
5
  app = Flask(__name__)
6
 
7
+ # Load coins from JSON file
 
 
8
  def load_coins():
9
+ with open('coins.json', 'r') as f:
10
+ return json.load(f)
 
 
11
 
12
+ # Save coins to JSON file
13
  def save_coins(coins):
14
+ with open('coins.json', 'w') as f:
15
  json.dump(coins, f)
16
 
 
 
 
 
 
 
 
 
 
 
17
  @app.route('/')
18
  def index():
19
+ return render_template('index.html')
 
20
 
21
+ @app.route('/api/coins')
22
+ def get_coins():
23
+ return jsonify(load_coins())
24
+
25
+ @app.route('/api/flip', methods=['POST'])
26
+ def flip_coin():
27
  data = request.json
28
+ coin_id = data['coinId']
29
  coins = load_coins()
30
+ coin = next((c for c in coins if c['id'] == coin_id), None)
31
 
32
+ if coin and random.random() < coin['winrate']:
33
+ return jsonify({'result': 'heads', 'value': coin['value']})
34
+ else:
35
+ return jsonify({'result': 'tails', 'value': 0})
 
 
 
36
 
37
+ @app.route('/api/mint', methods=['POST'])
38
+ def mint_coin():
39
  coins = load_coins()
40
+ new_id = max(coin['id'] for coin in coins) + 1
41
+
42
+ # Algorithm to balance cost, price, and value
43
+ winrate = random.uniform(0.1, 0.9)
44
+ value = random.uniform(0.1, 2.0)
45
+ price = int(max(1, (winrate * value * 100) ** 1.5))
46
+
47
+ new_coin = {
48
+ 'id': new_id,
49
+ 'color': f'#{random.randint(0, 0xFFFFFF):06x}',
50
+ 'price': price,
51
+ 'value': round(value, 2),
52
+ 'winrate': round(winrate, 2)
53
+ }
54
+
55
+ coins.append(new_coin)
56
  save_coins(coins)
57
  return jsonify(new_coin)
58
 
59
+ @app.route('/api/leaderboard', methods=['GET', 'POST'])
60
  def leaderboard():
61
+ leaderboard_file = 'leaderboard.json'
62
+
63
  if request.method == 'POST':
64
  data = request.json
65
+ initials = data['initials']
66
+ score = data['score']
67
+
68
+ try:
69
+ with open(leaderboard_file, 'r') as f:
70
+ leaderboard = json.load(f)
71
+ except FileNotFoundError:
72
+ leaderboard = []
73
+
74
+ leaderboard.append({'initials': initials, 'score': score})
75
+ leaderboard.sort(key=lambda x: x['score'], reverse=True)
76
  leaderboard = leaderboard[:10] # Keep only top 10
77
+
78
+ with open(leaderboard_file, 'w') as f:
79
+ json.dump(leaderboard, f)
80
+
81
+ return jsonify({'success': True})
82
  else:
83
+ try:
84
+ with open(leaderboard_file, 'r') as f:
85
+ leaderboard = json.load(f)
86
+ except FileNotFoundError:
87
+ leaderboard = []
88
+
89
+ return jsonify(leaderboard)
 
 
 
 
 
 
 
 
 
90
 
91
  if __name__ == '__main__':
92
+ app.run(debug=True, host='0.0.0.0', port=7860)