İçindekiler:
- 1. Adım: Geniş Genel Bakış
- 2. Adım: Önkoşullar
- Adım 3: Pygame Zero'da "Merhaba Dünya"
- Adım 4: Aktörünüzü Çizmek
- Adım 5: Aktörü Kontrol Edin
- Adım 6: Parkuru İnşa Etme
- Adım 7: Araba Kazası
- 8. Adım: Oyunu Raspberry Pi'de Çalıştırın
- Adım 9: Kazandınız mı?
- Adım 10: Sonuç
Video: İlk Yarış Oyununuzu Yaratın: 10 Adım
2024 Yazar: John Day | [email protected]. Son düzenleme: 2024-01-30 13:20
Biraz Python kodlaması yaptıysanız ve bir oyun yazmak istiyorsanız, Pygame Zero'ya sahip olabilirsiniz.
Bu dersimizde basit bir yarış oyunu yazacağız.
1. Adım: Geniş Genel Bakış
Pygame modülü, Python'da oyun yazmanıza yardımcı olan birçok işlev ekler.
Pygame Zero, tüm bu oyun döngülerini oluşturma ve program yapınızı ayarlama gibi hantal süreci atlamanıza izin vermek için bir adım daha ileri gider.
Pygame Zero, Raspberry Pi veya herhangi bir Linux makinesinde bilgisayar oyunları yazmaya başlamak isteyen herkes için mükemmel bir seçimdir.
İhtiyacın olacak:
- Linux işletim sistemini çalıştıran makine
- Python programı yazmak için editör
- Tuş takımı
- Biraz hayal gücü
Dosyalar:
github.com/AhmNouira/-Racing-Game
2. Adım: Önkoşullar
İlk önce dizüstü bilgisayarımı Ubuntu 18.04 OS ile kullanacağım. Ardından 8. adımda Raspberry Pi üzerinde oyunu çalıştıracağız.
Bu eğiticiye devam etmeden önce, sudo ayrıcalıklarına sahip bir kullanıcı olarak oturum açtığınızdan emin olun.
Python 3 için pip yükleme
Aşağıdaki komutu kullanarak paket listesini güncelleyerek başlayın:
sudo uygun güncelleme
Python 3 için pip yüklemek için aşağıdaki komutu kullanın:
sudo apt python3-pip'i kurun
pip sürümünü kontrol ederek kurulumu doğrulayın:
pip3 --versiyon
Pygame Zero'yu Yükleme
pip3 kurulumu pgzero --user
Bu aynı zamanda Pygame'i de yükleyecektir. Önceden derlenmiş Pygame paketleri
Bu yüzden yolculuğunuzun ilk adımı Python 3 IDLE'yi veya favori python editörünüzü açmak olacaktır.
Adım 3: Pygame Zero'da "Merhaba Dünya"
Varsayılan olarak, Pygame Zero penceresi 800 piksel genişliğinde ve 600 piksel yüksekliğinde açılır. özelleştirebilirsiniz
Pencerenizin boyutu, WIDTH = 700 HIGH = 800'ü dahil ederseniz ayarlayabileceğiniz önceden belirlenmiş iki değişken vardır.
Pygame zero, normalde gerçekleştiren oyun döngüsünü işlemek için önceden tanımlanmış işlevler sağlar:
Beraberlik() Fonksiyonu
Normalde Python'da bir fonksiyon tanımladığımız gibi bu fonksiyonu programımıza yazabiliriz.
Pygame Zero, Python ile aynı biçimlendirme kurallarını izler, bu nedenle kodunuzu doğru girintilemeye özen göstermeniz gerekir.
#!/usr/bin/python3 # yorumlayıcıyı ayarla
import pgzrun # import pgzero module WIDTH = 700 # pencerenin genişliği HEIGHT = 800 # pencerenin yüksekliği def draw(): # pygame zero draw function screen.fill((128, 128, 128)) # ekranı RGB ile doldurun color screen.draw.text("Merhaba Dünya!", (270, 320), # draw "Merhaba Dünya!" color = (255, 255, 255), fontsize = 40) pgzrun.go()
Öncelikle program dosyanızı kaydetmeniz ve ona bir ad vermeniz gerekir.
Ardından bir Terminal penceresi açın, dosya konumunuza gidin ve şunu yazın:
./.py
Adım 4: Aktörünüzü Çizmek
Artık sahne setimize sahip olduğumuza göre, Aktörlerimizi oluşturabiliriz, onlar Pygame Zero'da dinamik nesnelerdir.
Programın en üstüne yazarak bir Aktör yükleyebiliriz:
araba = Aktör ("yarış arabası")
Pygame Zero'da resimlerimizin, program dosyamızın yanında, images adlı bir dizinde saklanması gerekiyor. Bu nedenle, Aktörümüz, racecar.png adlı resimler klasöründe bir resim dosyası arıyor olacaktır. Bu bir GIF veya-j.webp
Yazarak ekrandaki konumunu ayarlayabilirsiniz:
araba.pos = 350, 560
Bundan sonra draw() fonksiyonumuzda yazabiliriz
car.draw() # yarış arabamızı tanımlı konumunda çiz
Tam program şöyle olacak:
#!/usr/bin/python3
import pgzrun WIDTH = 700 # pencerenin genişliği HEIGHT = 800 # pencerenin yüksekliği araba = Actor("yarış arabası") car.pos = 350, 560 def draw(): # pygame zero draw function screen.fill((128, 128, 128)) # ekranı car.draw() pgzrun.go() ile doldurun
Bunun çalıştığından emin olmak için programınızı test edin.
Adım 5: Aktörü Kontrol Edin
Arabamızı ekranda çizdikten sonraki aşama, oyuncunun onu hareket ettirmesini sağlamaktır.
Bunu tuşlara basarak yapabiliriz. Bu anahtarların durumunu, update() adlı önceden tanımlanmış başka bir işlev içinde okuyabiliriz.
update() Fonksiyonu
Bu işlev, oyun çalışırken sürekli olarak kontrol edilir.
Ok tuşlarına basışları algılamak ve bununla ilgili bir şeyler yapmak için bir kod yazmamız gerekiyor.
Bu fonksiyonu programımıza ekleyeceğiz.
tanım güncelleme():
if keyboard.left: car.x -=2 ise keyboard.right: car.x +=2 ise keyboard.up: car.y -=2 ise keyboard.down: car.y +=2 ise
Bu kod satırları, araba Aktörünü sola, sağa, ileri ve geri hareket ettirecektir.
Adım 6: Parkuru İnşa Etme
Artık yönlendirebileceğimiz bir arabamız olduğuna göre, sürmesi için bir palete ihtiyacımız var.
Parkurumuzu her seferinde bir satır olmak üzere Aktörlerden oluşturacağız. Yarattığımız Aktörleri takip etmek için bazı listeler yapmamız gerekecek.
Ayrıca parça için birkaç değişken daha ayarlamamız gerekecek.
O zaman makeTrack() adında yeni bir fonksiyon yapalım. Bu fonksiyon, her ikisi de images klasörümüzdeki bare-p.webp
trackLeft = # sol engelleri saklamak için liste
trackRight = # sağ engelleri saklamak için liste trackCount = 0 # engel sayısını say trackPosition = 350 trackWidth = 150 # sol ve sağ engeller arasındaki genişlik def makeTrack(): # sol ve sağda bir engel oluşturma işlevi global trackCount, trackLeft, trackRight, trackPosition, trackWidth trackLeft.append(Actor("bare", pos = (trackPosition-trackWidth, 0))) trackRight.append(Actor("bare", pos = (trackPosition + trackWidth, 0))) trackCount +=1
Bir sonraki yapmamız gereken şey, parkurun bölümlerini ekranın aşağısında araca doğru hareket ettirmek.
updateTrack() adında yeni bir fonksiyon yazalım, Bu fonksiyon parça bloklarının görüneceği yeri günceller. Parça parçaları rastgele sayılarla oluşturulur, böylece her çalma farklıdır.
trackDriction = Yanlış
SPEED = 4 # rastgele içe aktarmadan oyunun hızını ayarlar randint # randint sınıfını rastgele modülden içe aktarma def updateTrack(): global trackCount, trackPosition, trackDirection, trackWidth, SPEED b = 0 iken b
Lütfen aşağıdaki "RaceGameDemo" adlı zip dosyasına bakın.
Şu anda kodumuzu çalıştırırsak, arabaya doğru kıvrılan bir iz görmeliyiz. Tek sorun, arabayı ray bariyerlerinin üzerinden hareket ettirebiliyor olmamız ve arabayı bazı çarpışma algılamalarıyla onların içinde tutmak istiyoruz.
Adım 7: Araba Kazası
Arabamızın Aktörlerin pistine dokunmadığından emin olmamız gerekiyor.
updateTrack() fonksiyonumuzda colliderect() yöntemini kullanarak çarpışmaları da test edebiliriz.
Bu oyunda, gameStatus değişkenimizde depolanan oyun için üç farklı durumumuz olacak:
- gameStatus == 0 # oyun çalışıyor
- gameStatus == 1 # araba kazası
- gameStatus == 2 # oyun bitti
gameStatus değişkenine yanıt vermek için draw() işlevimizi ve update() işlevimizi değiştirmemiz gerekecek.
Son rötuşlar
Şimdi yapmamız gereken tek şey, gameStatus 1 veya 2 olarak ayarlanmışsa bir şey görüntülemek, örneğin kırmızı göstermeliyiz.
bayrak, araba çarparsa. Bunu aşağıdaki kodla yapabiliriz:
screen.blit("kırmızı bayrak", (230, 230))
Arabanın bitişe ulaşıp ulaşmadığını görmek için, kaç tane pist bölümü oluşturulduğunu saymalıyız ve sonra belki 200'e ulaştığımızda gameStatus'u 2'ye ayarlayın. Ardından damalı bayrağı görüntüleyin:
screen.blit("bitiş işareti", (230, 230))
Ayrıca oyunun mevcut skoru gibi bazı metinleri ekranda görüntüleyeceğiz.
Bunların nasıl bir araya geldiğini görmek için tam kod listesine bir göz atın.
8. Adım: Oyunu Raspberry Pi'de Çalıştırın
Raspberry Pi'de pgzero, Raspbian Jessie'nin Eylül 2015'te piyasaya sürülmesinden bu yana varsayılan olarak yüklenmiştir.
Raspberry Pi'nizi şu komutu kullanarak güncellemeniz yeterlidir:
sudo apt-get güncellemesi
Dosya konumunuza gidin ve Terminal'e yazın.
pgzrun.py
Adım 9: Kazandınız mı?
Parçayı farklı bir genişlikte yapmak için trackWidth değişkenini değiştirerek oyunu daha kolay veya daha zor hale getirebilirsiniz. Parçanın daha hızlı veya daha yavaş hareket etmesini sağlamak için SPEED değerini değiştirebilirsiniz.
Adım 10: Sonuç
Pygame Zero, bilgisayar oyunları yazmaya başlamak isteyen herkes için harika bir seçimdir.
Herhangi bir sorunuz varsa tabiki yorum bırakabilirsiniz. Çalışmalarım hakkında daha fazla bilgi için lütfen kanalımı ziyaret edin:
benimYouTube'um
Twitter'ım
benimLinkedin
Bu talimatı okuduğunuz için teşekkürler ^^ ve iyi günler. Görüşürüz. Ahmet Nuri.
Önerilen:
Java ile Kendi 2048 Oyununuzu Programlayın: 8 Adım
Kendi 2048 Oyununuzu Java ile Programlayın!: 2048 oyununu çok seviyorum. Bu yüzden kendi versiyonumu programlamaya karar verdim. Gerçek oyuna çok benziyor, ancak kendim programlamak bana istediğim zaman istediğim şeyi değiştirme özgürlüğü veriyor. Tipik 4x4 yerine 5x5 oyun istiyorsam, bir s
Kendi 1D Pong Oyununuzu Yapın: 5 Adım (Resimlerle)
Kendi 1 Boyutlu Pong Oyununuzu Yapın: Bu proje için size oynaması gerçekten eğlenceli bir 1 Boyutlu Pong Oyunu yaratmak için bir MDF kartını buzzer düğmeleri, LED'ler ve bir Arduino Nano ile nasıl birleştirdiğimi göstereceğim. Yol boyunca size elektronik devrenin nasıl oluşturulacağını ve ne kadar farklı olduğunu göstereceğim
2D Oyun Yaratın: 15 Adım
2D Oyun Yaratın: Oyun oynamaktan bıktınız mı? Neden bir oyun yapmıyorsunuz? Bu talimat, tamamen Basit bir 2D Oyunun nasıl yapılacağı konusunda size yol gösterir…2D Oyunumuzu tasarlamak ve oluşturmak için Unity Oyun Motorunu Kullanacağız… ve ayrıca Programlamak ve Programlamak için Microsoft Visual Studio'yu kullanacağız. kr
Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: 5 Adım
Dijital Satranç - Satranç Oyununuzu Çevrimiçi Takip Edin: Gençliğimden beri çok fazla satranç oynuyorum ve web'de bilgisayarlara veya canlı rakiplere karşı satranç oynamak için çok sayıda web sitesi bulunduğundan, bir kez bile bir web sitesi bulamadım. gerçekte oynadığınız satranç oyununuzu takip eden
Java'da Kendi Tic Tac Toe Oyununuzu Yazın: 6 Adım
Java'da Kendi Tic Tac Toe Oyununuzu Yazın: Eminim hepiniz klasik Tic Tic Toe oyununu biliyorsunuzdur. Tic Tac Toe ilkokul yıllarımdan beri arkadaşlarımla oynadığım popüler bir oyundu. Oyunun basitliğine her zaman hayran olmuşumdur. İlk yılımda, benim