2D bir oyun yazılımı yapmak

Miraç Gürbüz

Decapat
Katılım
8 Şubat 2023
Mesajlar
3.822
Çözümler
12
Daha fazla  
Cinsiyet
Erkek
Dün yazılım öğrenmek için ilk adımımı attım 2D bir oyun yazılımı yapıyorum şu anda Python dili üzerinden bir tane hata var ve çözemedim video izleyerek yapıyorum videodaki bilgilerle her şeyim doğru, bu sorunu nasıl çözebilirim? Yardımcı olabilecek var mı?


Python:
import pygame,random

#paketlerimizi başlattık.
pygame.init()
#penceremizi oluşturduk.
GENISLIK,YUKSEKLIK=612,408
pencere=pygame.display.set_mode((GENISLIK,YUKSEKLIK))

#Arkaplan şarkısı ve ses efektlerinin oluşması.
pygame.mixer.music.load("hop-no-copyright-30-seconds-by-infraction.wav")
pygame.mixer.music.play(-1,0,0)
seviye_yukselme_sesi=pygame.mixer.Sound("level-up-sound-effect.wav")
silah_alma_sesi=pygame.mixer.Sound("pickup.wav")

#FPS Değerleri.
HIZ=5
saat=pygame.time.Clock()
FPS=60

#Karakter ve Silah Tanımı.
tetikci=pygame.image.load("user.png")
tetikci_koordinat=tetikci.get_rect()
tetikci_koordinat=topleft=(GENISLIK/2,YUKSEKLIK/2)

silah=pygame.image.load("weapon.png")
silah_koordinat=silah.get_rect()
silah_koordinat=topleft=(150,150)

arka_plan=pygame.image.load("arkaplan.jpg")

#Font ayarlaması.
Font=pygame.font.SysFont("Consoles",25)

#Skor
Skor=0
#Oyun Döngüsü.
durum=True
while durum:
 for etkinlik in pygame.event.get():
 if etkinlik.type==pygame.QUIT:

 durum=False

 pencere.blit(arka_plan,(0,0))
 pencere.blit(tetikci,tetikci_koordinat)
 pencere.blit(silah,silah_koordinat)
 YAZI=Font.render("Skor:"+str(Skor),True,(0,0,0))
 YAZI_KOORDINAT=YAZI.get_rect()
 YAZI_KOORDINAT.topleft=(20,20)
 pygame.draw.line(pencere,(255,127,0),(0,45),(612,45),3)
 pencere.blit(YAZI,YAZI_KOORDINAT)
 tus=pygame.key.get_pressed()
 if tus[pygame.K_LEFT] and tetikci_koordinat.left>0:
 tetikci_koordinat.x-=HIZ
 elif tus[pygame.K_RIGHT] and tetikci_koordinat.right<GENISLIK:
 tetikci_koordinat.x+=HIZ
 elif tus[pygame.K_UP] and tetikci_koordinat.top>0:
 tetikci_koordinat.y-=HIZ
 elif tus[pygame.K_DOWN] and tetikci_koordinat.bottom<YUKSEKLIK:
 tetikci_koordinat.y+=HIZ

pygame.display.update()
saat.tick(FPS)
pygame.quit()

[ATTACH type="full"]2035943[/ATTACH]
Hata kodu bu şekilde.

Dün yazılım öğrenmek için ilk adımımı attım 2D bir oyun yazılımı yapıyorum şu anda Python dili üzerinden bir tane hata var ve çözemedim video izleyerek yapıyorum videodaki bilgilerle her şeyim doğru bu sorunu nasıl çözebilirim yardımcı olabilecek var mı?


Python:
import pygame,random

#paketlerimizi başlattık.
pygame.init()
#penceremizi oluşturduk.
GENISLIK,YUKSEKLIK=612,408
pencere=pygame.display.set_mode((GENISLIK,YUKSEKLIK))

#Arkaplan şarkısı ve ses efektlerinin oluşması.
pygame.mixer.music.load("hop-no-copyright-30-seconds-by-infraction.wav")
pygame.mixer.music.play(-1,0,0)
seviye_yukselme_sesi=pygame.mixer.Sound("level-up-sound-effect.wav")
silah_alma_sesi=pygame.mixer.Sound("pickup.wav")

#FPS Değerleri.
HIZ=5
saat=pygame.time.Clock()
FPS=60

#Karakter ve Silah Tanımı.
tetikci=pygame.image.load("user.png")
tetikci_koordinat=tetikci.get_rect()
tetikci_koordinat=topleft=(GENISLIK/2,YUKSEKLIK/2)

silah=pygame.image.load("weapon.png")
silah_koordinat=silah.get_rect()
silah_koordinat=topleft=(150,150)

arka_plan=pygame.image.load("arkaplan.jpg")

#Font ayarlaması.
Font=pygame.font.SysFont("Consoles",25)

#Skor
Skor=0
#Oyun Döngüsü.
durum=True
while durum:
 for etkinlik in pygame.event.get():
 if etkinlik.type==pygame.QUIT:

 durum=False

 pencere.blit(arka_plan,(0,0))
 pencere.blit(tetikci,tetikci_koordinat)
 pencere.blit(silah,silah_koordinat)
 YAZI=Font.render("Skor:"+str(Skor),True,(0,0,0))
 YAZI_KOORDINAT=YAZI.get_rect()
 YAZI_KOORDINAT.topleft=(20,20)
 pygame.draw.line(pencere,(255,127,0),(0,45),(612,45),3)
 pencere.blit(YAZI,YAZI_KOORDINAT)
 tus=pygame.key.get_pressed()
 if tus[pygame.K_LEFT] and tetikci_koordinat.left>0:
 tetikci_koordinat.x-=HIZ
 elif tus[pygame.K_RIGHT] and tetikci_koordinat.right<GENISLIK:
 tetikci_koordinat.x+=HIZ
 elif tus[pygame.K_UP] and tetikci_koordinat.top>0:
 tetikci_koordinat.y-=HIZ
 elif tus[pygame.K_DOWN] and tetikci_koordinat.bottom<YUKSEKLIK:
 tetikci_koordinat.y+=HIZ

pygame.display.update()
saat.tick(FPS)
pygame.quit()

[ATTACH type="full"]2035943[/ATTACH]
Hata kodu bu şekilde.

Uygulama açılıyor fakat şimdi de arka plan ve görüntüler kaybolmuş bu kadar zor olmamalıydı.
 

Dosya Ekleri

  • 1701299361723.png
    1701299361723.png
    6,8 KB · Görüntüleme: 33
Son düzenleyen: Moderatör:
Dümdüz yazamazsınız hocam. Girintilerin olması lazım. PyGame'i bilmiyorum ama en basitinden if-else'de bile girinti olması lazım.

İlk başta Python'u tam olarak öğrenin bence. Daha sonra istediğini yaparsın zaten.
 
Sorunu çözdüm Elif komutlarının if girintilerinin paralel olacak şekilde alt satırından devam etmesi gerekiyormuş bazı noktalarda eşittir değil nokta kullanmam gerekiyormuş o şekilde hallettim Python yerine Unreal Engine kullanmayı düşünüyorum dün gece birkaç araştırmadan sonra en azından hem gelişimim daha zor olsa da hayal gücümü ve çabamı arttırır teşekkür ederim.
 
2D icin Unreal uygun degil, Godot'ya da Unity tercih edebilirsin.

Blueprint sistemi kullanmayı düşünüyorum 2D 3D 2D yapmak daha kolay olur ilk başlarda diye 2D yapmayı düşündüm aslında ama Blueprint sistemini kullanmak çok zor değilse Unreal üzerinden Blueprint'de öğrenebilirim önerin ne olur?
 
Blueprint sistemi kullanmayı düşünüyorum 2D 3D 2D yapmak daha kolay olur ilk başlarda diye 2D yapmayı düşündüm aslında ama Blueprint sistemini kullanmak çok zor değilse Unreal üzerinden Blueprint'de öğrenebilirim önerin ne olur?

Unity için Unity Visual SCRIPTING var Unreal Engine Blueprint'i alternetifi gibi düşünebilirsin. Hiç kullanmadım birkaç yıl önce Unity kullanırken görmüştüm. Arkadaşım dediği gibi 2D için Unity daha mantıklı.
 

Geri
Yukarı