Spaces:
Sleeping
Sleeping
File size: 7,442 Bytes
8012c51 83e3057 62f92ca baee29e 83e3057 66e7a02 83e3057 62f92ca 5ff0a1c 62f92ca 5ff0a1c 83e3057 9bbd1cc 83e3057 5ff0a1c 9bbd1cc 5ff0a1c 83e3057 5ff0a1c 83e3057 66e7a02 5ff0a1c 66e7a02 9bbd1cc e250747 9bbd1cc eddc9ca 9bbd1cc eddc9ca 9bbd1cc |
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 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 |
import streamlit as st
import pandas as pd
import json
# Oyuncu sınıfı tanımı
class Player:
def __init__(self, name):
self.name = name
self.league_position = None
self.target_hit = None
self.cup_stage = None
self.yellow_cards = 0
self.red_cards = 0
self.goals_conceded = 0
self.goals_scored = 0
self.interviews = 0
self.penalty_points = []
self.score = 0
# Veri kaydetme fonksiyonu
def save_data(players, filename="players.json"):
data = []
for player in players:
player_data = {
"name": player.name,
"league_position": player.league_position,
"target_hit": player.target_hit,
"cup_stage": player.cup_stage,
"yellow_cards": player.yellow_cards,
"red_cards": player.red_cards,
"goals_conceded": player.goals_conceded,
"goals_scored": player.goals_scored,
"interviews": player.interviews,
"penalty_points": player.penalty_points,
"score": player.score
}
data.append(player_data)
with open(filename, "w") as f:
json.dump(data, f, indent=4)
# Veri yükleme fonksiyonu
def load_data(filename="players.json"):
try:
with open(filename, "r") as f:
data = json.load(f)
except FileNotFoundError:
data = []
players = []
for player_data in data:
player = Player(player_data["name"])
player.league_position = player_data["league_position"]
player.target_hit = player_data["target_hit"]
player.cup_stage = player_data["cup_stage"]
player.yellow_cards = player_data["yellow_cards"]
player.red_cards = player_data["red_cards"]
player.goals_conceded = player_data["goals_conceded"]
player.goals_scored = player_data["goals_scored"]
player.interviews = player_data["interviews"]
player.penalty_points = player_data["penalty_points"]
player.score = player_data["score"]
players.append(player)
return players
# Fair play ödüllerini belirleme
def calculate_fair_play_points(players):
if not players:
st.warning("Oyuncu listesi boş. Lütfen en az bir oyuncu ekleyin.")
return
min_yellow_cards = min(players, key=lambda p: p.yellow_cards).yellow_cards
min_red_cards = min(players, key=lambda p: p.red_cards).red_cards
for player in players:
if player.yellow_cards == min_yellow_cards and player.red_cards == min_red_cards:
player.score += 1
# En az gol yiyen ve en çok gol atan takımlara ödül verme
def calculate_goal_awards(players):
if not players:
st.warning("Oyuncu listesi boş. Lütfen en az bir oyuncu ekleyin.")
return
min_goals_conceded = min(players, key=lambda p: p.goals_conceded).goals_conceded
max_goals_scored = max(players, key=lambda p: p.goals_scored).goals_scored
for player in players:
if player.goals_conceded == min_goals_conceded:
player.score += 1
if player.goals_scored == max_goals_scored:
player.score += 1
# Kural ihlallerine göre ceza puanları ekleme
def apply_penalty_points(players):
penalties = {
"Transfer ihlali": -3,
"İç transfer ihlali": -5,
"Aktiflik ihlali": -1,
"Aynı takım arası iç transfer ihlali": -5,
"Toplam iç transfer sayısı ihlali": -5,
"Kadro planlaması ihlali": -6
}
for player in players:
for violation in player.penalty_points:
if violation in penalties:
player.score += penalties[violation]
def create_dataframe(players):
df_players = pd.DataFrame({
"Oyuncu": [player.name for player in players],
"Lig Sıralaması": [player.league_position for player in players],
"Hedef Tutturması": [player.target_hit for player in players],
"Kupa Aşaması": [player.cup_stage for player in players],
"Sarı Kartlar": [player.yellow_cards for player in players],
"Kırmızı Kartlar": [player.red_cards for player in players],
"Yenilen Goller": [player.goals_conceded for player in players],
"Atılan Goller": [player.goals_scored for player in players],
"Röportaj Sayısı": [player.interviews for player in players],
"Puan": [player.score for player in players]
})
return df_players
def calculate_scores(players):
for player in players:
player.score = (
20 - player.league_position +
player.target_hit +
player.cup_stage +
(1 if player.yellow_cards == 0 else 0) +
(1 if player.goals_conceded == min([p.goals_conceded for p in players]) else 0) +
(1 if player.interviews >= 25 else 0)
)
# Ana uygulama akışı
def main():
st.title("Özel Online Score Manager Ligi")
player_name = st.text_input("Oyuncu İsmi")
player_league_position = st.number_input("Lig Sıralaması", min_value=1, max_value=20)
player_target_hit = st.selectbox("Hedef Tutturması", options=[1, -1], index=0)
player_cup_stage = st.selectbox("Kupa Aşaması", options=[4, 3, 2, 1], index=0)
player_yellow_cards = st.number_input("Sarı Kartlar", min_value=0)
player_red_cards = st.number_input("Kırmızı Kartlar", min_value=0)
player_goals_conceded = st.number_input("Yenilen Goller", min_value=0)
player_goals_scored = st.number_input("Atılan Goller", min_value=0)
player_interviews = st.number_input("Röportaj Sayısı", min_value=0)
player_penalties = st.multiselect("Kural İhlalleri", options=[
"Transfer ihlali",
"İç transfer ihlali",
"Aktiflik ihlali",
"Aynı takım arası iç transfer ihlali",
"Toplam iç transfer sayısı ihlali",
"Kadro planlaması ihlali"
])
if st.button("Ekle"):
new_player = Player(player_name)
new_player.league_position = player_league_position
new_player.target_hit = player_target_hit
new_player.cup_stage = player_cup_stage
new_player.yellow_cards = player_yellow_cards
new_player.red_cards = player_red_cards
new_player.goals_conceded = player_goals_conceded
new_player.goals_scored = player_goals_scored
new_player.interviews = player_interviews
new_player.penalty_points = player_penalties
# Oyuncuyu ekleyip kaydet
players = load_data()
players.append(new_player)
save_data(players)
st.success(f"{player_name} eklendi!")
# DataFrame'i oluştur
players = load_data()
df_players = create_dataframe(players)
# Hesapla bölümü
if st.button("Hesapla"):
players = load_data()
calculate_fair_play_points(players)
calculate_goal_awards(players)
apply_penalty_points(players)
calculate_scores(players)
df_players=create_dataframe(players)
save_data(players)
st.success("Hesaplamalar yapıldı ve ödüller verildi!")
# DataFrame'i görüntüle
st.write(df_players)
# Excel çıktısı
if st.button("Excel İndir"):
st.write("Excel İndiriliyor...")
with pd.ExcelWriter('oyuncu_verileri.xlsx') as writer:
df_players.to_excel(writer, index=False)
# Uygulama başlatma
if __name__ == "__main__":
main()
|