Strona 1 z 1

Program Symulator Mini Lotto

: 30 wrz 2024, 7:07
autor: Barek43
WItam to mój kolejny program napisany z nudów tym razem symulator mini lotto. Działanie programu jest niemal identyczne z prawdziwą grą pod względem szans na wygraną jak i obliczaniu potencjalnych zysków ,program wylicza wygrane. nie liczy kosztów żeby nie psuć zabawy.

Obrazek
Obrazek
Obrazek

link
http://www.mediafire.com/file/i9zc6vg4ydjscc6/symulator_multilotto.zip
skan AV
https://www.virustotal.com/gui/file-analysis/Mzc1OGFlYzc3NTUxZjVkNjEzNTY0YmIwZTAzMDllZmU6MTcyNzY3MjQ3OA==

Pod spodem kod programu jak kto chciałby sobie modyfikowac do innych gier.

import random
import tkinter as tk
from tkinter import messagebox, scrolledtext
from tkinter import ttk
from PIL import Image, ImageTk

def losuj_kule(liczba_kul, max_numer):
kule = random.sample(range(1, max_numer + 1), liczba_kul)
return kule

def zatwierdz_wprowadzenie():
wyswietl_kule()

def wyswietl_kule():
liczba_kul = 5
max_numer = 42
wylosowane_kule = losuj_kule(liczba_kul, max_numer)

for widget in frame.kule_frame.winfo_children():
widget.destroy()

pokaz_kule(wylosowane_kule)

def pokaz_kule(wylosowane_kule, index=0):
if index < len(wylosowane_kule):
numer = wylosowane_kule[index]

kula_frame = tk.Frame(frame.kule_frame, bg='blue')
kula_frame.pack(side=tk.LEFT, padx=5, pady=5)

kula = tk.Canvas(kula_frame, width=50, height=50, bg='blue', highlightthickness=0)
kula.create_oval(5, 5, 45, 45, fill='yellow')
kula.pack()

kula.create_text(25, 25, text=str(numer), font=('Arial', 14, 'bold'))

frame.after(1000, lambda: pokaz_kule(wylosowane_kule, index + 1))
else:
sprawdz_trafienia(wylosowane_kule)

def sprawdz_trafienia(wylosowane_kule):
input_text = text_zaklady.get("1.0", tk.END).strip()
trafione_zaklady = []
liczba_zakladow = 0
liczba_trojek = 0
liczba_czworek = 0
liczba_piatek = 0

zyski_text = ""

for line in input_text.splitlines():
zaklad = set()
for num_str in line.split(','):
try:
num = int(num_str.strip())
if 1 <= num <= 42:
zaklad.add(num)
except ValueError:
continue

if zaklad:
liczba_zakladow += 1
trafienia = set(wylosowane_kule) & zaklad
liczba_trafien = len(trafienia)

if liczba_trafien == 5:
liczba_piatek += 1
zysk = 300000
elif liczba_trafien == 4:
liczba_czworek += 1
zysk = 1200
elif liczba_trafien == 3:
liczba_trojek += 1
zysk = 50
else:
zysk = 0

if zysk > 0:
trafione_zaklady.append((zaklad, trafienia, zysk))

# Sortowanie trafionych zakładów według zysku (od największego do najmniejszego)
trafione_zaklady.sort(key=lambda x: x[2], reverse=True)

wiadomosc = (f"Wylosowane kule: {wylosowane_kule}\n"
f"Ilość zakładów zawartych: {liczba_zakladow}\n"
f"Ilość trafionych zakładów: {len(trafione_zaklady)}\n"
f"Trafione trojki: {liczba_trojek}\n"
f"Trafione czwórki: {liczba_czworek}\n"
f"Trafione piątki: {liczba_piatek}\n")

if trafione_zaklady:
for zaklad, trafienia, zysk in trafione_zaklady:
zyski_text += (f"Zakład: {','.join(map(str, sorted(zaklad)))}, "
f"Trafione: {','.join(map(str, sorted(trafienia)))}, "
f"Zysk: {zysk}\n")

wiadomosc += "Gratulacje! Trafiłeś w następujące zakłady:\n" + zyski_text
suma_zyskow = sum(zysk for _, _, zysk in trafione_zaklady)
wiadomosc += f"Suma zysków: {suma_zyskow}\n"
else:
wiadomosc += "Niestety, nie trafiłeś żadnego zakładu."

pokaz_wynik(wiadomosc)
zaktualizuj_zyski(zyski_text)


def zaktualizuj_zyski(zyski_text):
zyski_text_box.config(state=tk.NORMAL)
zyski_text_box.delete("1.0", tk.END)
zyski_text_box.insert(tk.END, zyski_text)
zyski_text_box.config(state=tk.DISABLED)

def pokaz_wynik(wiadomosc):
dialog = tk.Toplevel(root)
dialog.title("Wynik")
dialog.configure(bg='blue')

text_box = scrolledtext.ScrolledText(dialog, wrap=tk.WORD, width=50, height=20, bg='lightyellow')
text_box.pack(padx=10, pady=10)
text_box.insert(tk.INSERT, wiadomosc)
text_box.config(state=tk.DISABLED)

def generuj_liczby():
liczba_zakladow = int(entry_ilosc_zakladow.get())
if liczba_zakladow <= 0:
messagebox.showerror("Błąd", "Ilość zakładów musi być większa niż 0.")
return

liczby = []
for _ in range(liczba_zakladow):
kule = losuj_kule(5, 42)
liczby.append(','.join(map(str, sorted(kule))))

messagebox.showinfo("Wylosowane liczby", f"Wylosowano {liczba_zakladow} zakładów.\n"
"Zakłady skopiowano do zakładki Losowanie.")

text_zaklady.delete("1.0", tk.END)
text_zaklady.insert(tk.END, "\n".join(liczby) + "\n")

# Inicjalizacja okna
root = tk.Tk()
root.title("Symulator MiniLotto")
root.configure(bg='blue')

# Notebook (zakładki)
notebook = ttk.Notebook(root)
notebook.pack(pady=20)

# Zakładka Główna
frame = tk.Frame(notebook, bg='blue')
notebook.add(frame, text='Losowanie')

# Ramka do wprowadzania zakładów
tk.Label(frame, text="Wprowadź swoje zakłady:", bg='blue', fg='yellow', font=('Arial', 15)).pack(pady=3)
text_zaklady = tk.Text(frame, width=30, height=5)
text_zaklady.pack(pady=5)

button_zatwierdz = tk.Button(frame, text="Zatwierdź Zakłady", command=zatwierdz_wprowadzenie)
button_zatwierdz.pack(pady=10)

# Dodanie obrazka
try:
obrazek = Image.open("obrazek.png")
obrazek = obrazek.resize((310, 250), Image.LANCZOS)
obrazek_tk = ImageTk.PhotoImage(obrazek)

label_obrazek = tk.Label(frame, image=obrazek_tk, bg='blue')
label_obrazek.pack(pady=10)
except Exception as e:
print(f"Błąd podczas wczytywania obrazka: {e}")

# Ramka do rysowania kul
frame.kule_frame = tk.Frame(frame, bg='blue')
frame.kule_frame.pack(pady=10)

# Zakładka Generator
frame_generator = tk.Frame(notebook, bg='blue')
notebook.add(frame_generator, text='Generator')

tk.Label(frame_generator, text="Ilość zakładów:", bg='blue', fg='yellow', font=('Arial', 15)).pack(pady=3)
entry_ilosc_zakladow = tk.Entry(frame_generator, width=5)
entry_ilosc_zakladow.pack(pady=5)

button_generuj = tk.Button(frame_generator, text="Wylosuj liczby", command=generuj_liczby)
button_generuj.pack(pady=20)

# Zakładka Zyski
frame_zyski = tk.Frame(notebook, bg='blue')
notebook.add(frame_zyski, text='Zyski')

# Ustawienia dla zakładki Zyski
info_zyski = tk.Label(frame_zyski, text="Twoje zyski", bg='blue', fg='yellow', font=('Arial', 15))
info_zyski.pack(pady=20)

# Dodanie Text widget do zakładki Zyski
zyski_text_box = scrolledtext.ScrolledText(frame_zyski, wrap=tk.WORD, width=35, height=27, bg='lightyellow')
zyski_text_box.pack(padx=10, pady=10)
zyski_text_box.config(state=tk.DISABLED)

# Uruchomienie głównej pętli
root.mainloop()

Re: Program Symulator Mini Lotto

: 30 wrz 2024, 11:24
autor: pablovsky
Świetna robota, kolego, z pewnością wielu skorzysta. 💪👍

Re: Program Symulator Mini Lotto

: 30 wrz 2024, 14:03
autor: lotto123
Brawo. Super program .

Re: Program Symulator Mini Lotto

: 30 wrz 2024, 16:05
autor: Zefirek
Nie mogę go otworzyć,bo antywirus usuwa go jako niebezpieczny :?:

Re: Program Symulator Mini Lotto

: 30 wrz 2024, 17:04
autor: Barek43
Zefirek pisze:
30 wrz 2024, 16:05
Nie mogę go otworzyć,bo antywirus usuwa go jako niebezpieczny :?:
Są 4 antywirusy co wykrywają tam jakiegoś wirusa ale proggram jest czysty a te AV pokazują false positive
https://www.virustotal.com/gui/file/5fb3adb177e4d2ec30f99611262c75c3c82f67312eeb084e07d24936d229bbb4?nocache=1

możesz dodać do wyjątków i wtedy powinno działać ,przy czym ja to testowałem tylko na Win 10 i na Ubuntu nie wiem jak z resztą systemów szczególnie tych starszych WIn7 itd.

Re: Program Symulator Mini Lotto

: 01 paź 2024, 11:36
autor: Barek43
BTW
jak coś to zrobiłem też strone internetową co ma identyczną funkcjonalność jak ten program więc jak komuś nie działa program to może sobie zajrzeć na strone i sie pobawić
http://mitolotto.cba.pl/

Dodano po 2 minutach 34 sekundach:
narazie strona jest na darmowym hostingu i z racji tego przy pierwszym wejściu trzeba kliknąć na stronie informacyjnej kontynuuj.

Re: Program Symulator Mini Lotto

: 03 paź 2024, 12:37
autor: System
Wybrałem 7 zestawów liczb i regularnie wchodzą trójki a raz na jakiś czas czwóreczka...

Spróbował by zagrać ale brak środków i stawka za zakład poszła do góry to tym bardziej.

Re: Program Symulator Mini Lotto

: 03 paź 2024, 13:04
autor: ralfek
to, ze wchodzilo, nie znaczy ze wjedzie, historycznie to kazdy sobei moze znalezc, na przyszlosc - nikt nie umie

Re: Program Symulator Mini Lotto

: 03 paź 2024, 13:08
autor: System
No ale ja już 6 razy sprawdzałem i za każdym razem mniej więcej tak samo wchodzi.

Dodano po 1 godzinie 7 minutach 47 sekundach:
Powiększyłem ilość wytypowanych zestawów do dziesięciu i zaczyna częściej coś wchodzić w generatorze.

Re: Program Symulator Mini Lotto

: 03 paź 2024, 15:03
autor: Barek43
Dodałem do symulatora opcje grania w Duzego Lotka , aktualne wyniki losowań TS i poprawiłem troche szate graficzną
Obrazek

link
http://mitolotto.cba.pl/