Bu yazımda python ile oyun basit bir oyun yapacağız.
Oyun yapımı ile ilgili video :
Kaynak kod ve içerikler :
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 |
from tkinter import * import random import time from PIL import ImageTk class Ufo: def __init__(self, Inek, UfoResim, canvas): self.canvas = canvas self.Ineks = Inek self.UfoResim = UfoResim self.skor = 0 self.hiz = 0 #Ufomuz self.idUFO = canvas.create_image(50, 100, image = UfoResim) #Ufomuzu Canvas Uzerine Yerlestiriyoruz #Sokurumuzun ve Anlik Hizimizin Yazacagi Textler self.textSkor = self.canvas.create_text(610, 30, text="Skor : 0", font=("Arial", 16), fill="red") self.textHiz = self.canvas.create_text(510, 30, text="Hız : 0", font=("Arial", 16), fill="blue") self.x = 0 # X eksenindeki baslangic hizimiz self.y = 0 # Y eksenindeki baslangic hizimiz #Klavye kontrol ayarlarimiz self.canvas.bind_all('<KeyPress-Left>', self.hareket_sag) #Sag yon tusuna basinca hareket_sag fonksiyonunu calistir self.canvas.bind_all('<KeyPress-Right>', self.hareket_sol) #Sol yon tusuna basinca hareket_sol fonksiyonunu calistir self.canvas.bind_all('<KeyPress-Up>', self.hareket_ust) #Ust yon tusuna basinca hareket_ust fonksiyonunu calistir self.canvas.bind_all('<KeyPress-Down>', self.hareket_alt) #Alt yon tusuna basinca hareket_alt fonksiyonunu calistir #Ufo Nesnemizi Ciziyoruz def Ciz(self): self.canvas.move(self.idUFO, self.x, self.y) # Baslangic olarak yukarida verdigimiz default hiz parametrelerini tanimliyoruz Koordinat = self.canvas.coords(self.idUFO) #Ufomuzun anlik ekran uzerindeki koordinatlarini aliyoruz #Ufomuz ekranin koselerine gelirse ne yapilacagini belirtiyoruz if Koordinat[0] < 10: # X ekseninde en sag self.Kaybettin() # Eger belirtilen degere gelirse calisacak fonksiyonumuz if Koordinat[0] > 670: # X ekseninde en sol self.Kaybettin()# Eger belirtilen degere gelirse calisacak fonksiyonumuz if Koordinat[1] < 10: # Y ekseninde en ust self.Kaybettin()# Eger belirtilen degere gelirse calisacak fonksiyonumuz if Koordinat[1] > 364: # Y ekseninde en asagisi self.Kaybettin()# Eger belirtilen degere gelirse calisacak fonksiyonumuz #Eger Ufomuz ile inegimiz ayni koordinata gelirse uygulancak islemler if self.InekKacir(Koordinat) == True: self.skor = self.skor + 1 #Skoru 1 arttiriyoruz startsX = float(random.randint(50,620)) #Inek nesnemizi x eksenindeki yeni koordinatini rastgele belirliyoruz startsY = float(random.randint(50,320)) #Inek nesnemizi y eksenindeki yeni koordinatini rastgele belirliyoruz self.canvas.coords(self.Ineks.idInek, startsX, startsY) #Inek nesnemixi yeni koordinatina tasiyoruz self.hiz = self.hiz + 1 #Ufomuzun hizini her inek yediginde 1 arttiriyoruz self.canvas.itemconfig(self.textSkor, text="Skor : %s" % self.skor) #Skor textimizi guncelliyoruz self.canvas.itemconfig(self.textHiz, text="Hız : %s" % self.hiz) #Hiz textimizi guncelliyoruz #Yon tuslari icin aragimiz fonksiyonlar. Kacirilan inek sayisina göre ufomuz hizleniyor. def hareket_sag(self, event): self.x = -1 - (self.hiz / 100) self.y = 0 def hareket_sol(self, event): self.x = 1 + (self.hiz / 100) self.y = 0 def hareket_ust(self, event): self.x = 0 self.y = -1 - (self.hiz / 100) def hareket_alt(self, event): self.x = 0 self.y = 1 + (self.hiz / 100) #Ufomuz ile inek ayni koordinata geldigini belirledigimiz fonskiyon. def InekKacir(self, pos): InekKoordinat = self.canvas.coords(self.Ineks.idInek) if pos[0] >= InekKoordinat[0] and pos[0] <= InekKoordinat[0] + 50: if pos[1] >= InekKoordinat[1] and pos[1] <= InekKoordinat[1] + 50: return True return False #Kaybetme fonksiyonumuz def Kaybettin(self): self.x = 0 #Hizimizi 0 liyoruz. self.y = 0 self.canvas.coords(self.idUFO, 700, 700) # Ufomuzu ekranin disina tasiyoruz self.textid = self.canvas.create_text(350, 150, text="Kaybettin", font=("Arial", 25), fill="red") #Ekrana kirmizi yazilar ile Kaybettin yaziyoruz. class Inek: def __init__(self, canvas, InekResim): self.canvas = canvas self.idInek = canvas.create_image(10, 10, image = InekResim) #Inegimii 10x10 koordinatlarinda olustiriyoruz. self.canvas.move(self.idInek, 150, 20) def Ciz(self): self.canvas.move(self.idInek, 0, 0) tk = Tk() tk.title('Inek Kacirma Oyunu') # Oyun basligimiz canvas = Canvas(tk, width=679, height=374, bd=0, highlightthickness=0) #Oyun ekranimizi 679x374 boyutlarinda olusturuyoruz UFO = PhotoImage(file = 'Ufo.png') #Ufo Resmimiz INEK = PhotoImage(file = 'Cow.png') #Inek Resmimiz ArkaPlan = ImageTk.PhotoImage(file = "MainBackground.png") #Arkaplan resmimiz canvas.create_image(0, 0, image = ArkaPlan, anchor = NW) #Ekranimizin arkaplanini belirliyoruz canvas.pack() tk.update() Inek = Inek(canvas, INEK) #Inek Nesnemize Gerekli Parametreleri Yolluyoruz. Ufo = Ufo(Inek, UFO, canvas)#Ufo Nesnemize Gerekli Parametreleri Yolluyoruz. while 1: Inek.Ciz() Ufo.Ciz() tk.update_idletasks() tk.update() time.sleep(0.005) |
Arka Plan :
Ufo :
İnek :
Merhaba, şöyle bir hata alıyorum;
Yardımcı olabilir misiniz. * koyup deniyorum en baştan yine olmuyor. Yıldız koyunca 100 tane kod hata alıyor.
* Koymadığım zaman sadece import hata alıyor.
Merhaba,
* Koyduktan sonrada verdiği hataların ekran görüntüsünü paylaşmanız mümkün mü ?
Bunu yapmak için bilgisayarda python kurulu olması gerekiyomu?
Tamam gerekmiyormuş
painte yazıncada çalışıyor
Merhaba no module named pil hatası alıyorum
Merhaba,
Pillow Kütüphanesini Yüklemediyseniz Bu Hatayı Alıyor Olabilirsiniz. Şu Komut Yardımı İle Yükleyebilirsiniz.
pip install Pillow