Menulis game python sederhana

Hari ini kita akan membuat permainan batu, gunting, kertas yang terkenal. Python python dan tkinter library akan membantu kami dengan ini, tetapi jika Anda tidak tahu apa itu, saya menyarankan Anda untuk membaca artikel ini .




Hal pertama yang kita butuhkan adalah struktur awal, sebuah jendela, akan terlihat seperti ini untuk saya:


from tkinter import * import random as rdm class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.startUI() def startUI(self): pass if __name__ == '__main__': root = Tk() root.geometry("500x500+200+200") root.title(", , ") root.resizable(False, False) root["bg"] = "#FFF" app = Main(root) app.pack() root.mainloop() 

Di sini kita membuat jendela abadi 500 dengan 500 dengan judul "Batu, gunting, kertas" dan latar belakang putih. Di jendela ini kita akan menambahkan tombol, penghitung, dll.



Sekarang dalam metode startUI kami tambahkan baris berikut :


 btn = Button(root, text="", font=("Times New Roman", 15)) btn = Button(root, text="", font=("Times New Roman", 15)) btn3 = Button(root, text="", font=("Times New Roman", 15)) btn.place(x=10, y=100, width=120, height=50) btn2.place(x=155, y=100, width=120, height=50) btn3.place(x=300, y=100, width=120, height=50) 

7 baris ini akan menambahkan 3 tombol ke jendela kita yang tidak melakukan apa-apa. Kami akan memperbaikinya nanti.



Pengguna membuat pilihannya dengan mengklik salah satu dari 3 tombol, ini keren, tapi kami butuh lawan, itulah gunanya modul acak.



Dan sekarang kita akan menambahkan fungsi yang akan menangani seleksi, dan memberikan jawaban siapa yang menang di babak ini. Mari kita lakukan seperti ini:


 btn = Button(root, text="", font=("Times New Roman", 15), command=lambda x=1: self.btn_click(x)) btn2 = Button(root, text="", font=("Times New Roman", 15), command=lambda x=2: self.btn_click(x)) btn3 = Button(root, text="", font=("Times New Roman", 15), command=lambda x=3: self.btn_click(x)) 

Apa yang sedang terjadi di sini?


Semuanya sangat sederhana. Secara kasar, jika pemain menekan batu, 1 akan pergi, jika ada gunting, maka 2, dan jika kertas, maka 3, dan tidak hanya akan pergi, tetapi juga akan ditampilkan di konsol.
Dengan mengorbankan komputer. Dia membuat pilihannya, tetapi pilihannya tidak pergi ke mana pun.



Sebelum melakukan logika, kita perlu meneruskan hasilnya kepada pemain, dan untuk ini kita akan menggunakan Label . Tambahkan baris berikut ke startUI :


 self.lbl = Label(root, text=" !", bg="#FFF", font=("Times New Roman", 21, "bold")) self.lbl.place(x=120, y=25) self.lbl2 = Label(root, justify="left", font=("Times New Roman", 13), text=f": {self.win}\n:" f" {self.lose}\n: {self.drow}", bg="#FFF") self.lbl2.place(x=5, y=5) 

Bagus Sekarang kita memiliki tulisan di mana kita akan menampilkan hasil putaran dan tulisan dengan statistik.



Mari kita membuat 3 counter:


1. Kerugian
2. Kemenangan
3. Tidak ada



Untuk melakukan ini, tambahkan baris berikut ke startUI yang sama:



 self.win = self.drow = self.lose = 0 

Sekarang, di kelas utama , buat metode btn_click , dan tulis baris berikut di dalamnya:



 def btn_click(self, choise): comp_choise = rdm.randint(1, 3) print(choise) 

Musiknya tidak diputar lama. Di tempat yang sama, di btn_click , hapus

cetak (choise)
dan tulis baris-baris ini:



 if choise == comp_choise: self.drow += 1 self.lbl.configure(text="") elif choise == 1 and comp_choise == 2 \ or choise == 2 and comp_choise == 3 \ or choise == 3 and comp_choise == 1: self.win += 1 self.lbl.configure(text="") else: self.lose += 1 self.lbl.configure(text="") self.lbl2.configure(text=f": {self.win}\n:" f" {self.lose}\n: {self.drow}") del comp_choise 

Sebenarnya semuanya, ini adalah akhir dari ciptaan. Semuanya berfungsi, Anda bisa bermain.



Kode lengkap:


 from tkinter import * import random as rdm class Main(Frame): def __init__(self, root): super(Main, self).__init__(root) self.startUI() def startUI(self): btn = Button(root, text="", font=("Times New Roman", 15), command=lambda x=1: self.btn_click(x)) btn2 = Button(root, text="", font=("Times New Roman", 15), command=lambda x=2: self.btn_click(x)) btn3 = Button(root, text="", font=("Times New Roman", 15), command=lambda x=3: self.btn_click(x)) btn.place(x=10, y=100, width=120, height=50) btn2.place(x=155, y=100, width=120, height=50) btn3.place(x=300, y=100, width=120, height=50) self.lbl = Label(root, text=" !", bg="#FFF", font=("Times New Roman", 21, "bold")) self.lbl.place(x=150, y=25) self.win = self.drow = self.lose = 0 self.lbl2 = Label(root, justify="left", font=("Times New Roman", 13), text=f": {self.win}\n:" f" {self.lose}\n: {self.drow}", bg="#FFF") self.lbl2.place(x=5, y=5) def btn_click(self, choise): comp_choise = rdm.randint(1, 3) if choise == comp_choise: self.drow += 1 self.lbl.configure(text="") elif choise == 1 and comp_choise == 2 \ or choise == 2 and comp_choise == 3 \ or choise == 3 and comp_choise == 1: self.win += 1 self.lbl.configure(text="") else: self.lose += 1 self.lbl.configure(text="") self.lbl2.configure(text=f": {self.win}\n:" f" {self.lose}\n: {self.drow}") del comp_choise if __name__ == '__main__': root = Tk() root.geometry("430x160+200+200") root.title(", , ") root.resizable(False, False) root["bg"] = "#FFF" app = Main(root) app.pack() root.mainloop() 

Source: https://habr.com/ru/post/id480906/


All Articles