Excitebike, bir motosikletle atlamaların üzerinden geçtiğiniz, engellerin etrafından dolaştığınız ve bitiş çizgisine doğru hızla ilerlediğiniz bir yan kaydırma oyunudur.

Nintendo, bu BMX yarış oyununu ilk olarak NES için başlattı. Oradan, şirket Excitebike'ı modernize etti ve N64'te ve sonunda Wii'de piyasaya sürdü.

Artık pek çok NES konsolu yok, bu da Excitebike oynamayı tekrar zorlaştırıyor. Wireframe Magazine'deki bazı retro hayranlar sayesinde, bir Python kodu parçacığı, Raspberry Pi'nizde veya ev PC'nizde saatlerce eğlenmek için bu NES klasiğini yeniden yaratabilir.

Kodu Alma ve Kurulum

Python kodunuzu düzenlemek için nano veya vim kullanabilseniz de, tam özellikli bir programın avantajlarından yararlanmak isteyeceksiniz. metin düzenleyici veya IDE.

Excitebike'a bu saygı çerçevesinde oluşturulan özellikleri desteklemek için Pygame Zero'yu kurmanız gerekecek. Pygame Zero, oyun yaratıcılarının basit temelleri tekrarlamak zorunda kalmadan odaklanması için Python modülleri içerir.

PC'nizde python3 yüklü değilse, şunları yapabilirsiniz:

instagram viewer
en son sürümü indir doğrudan Python'dan. Ayrıca isteyeceksin PIP'in kurulu olduğundan emin olun fazla.

Python ve PIP'nin en son sürümü yüklendiğinde, PowerShell veya Linux terminalinizi açın ve şunu yazın:

pip3 düzenlemek pgzero

Son olarak, Wireframe dergisinin GitHub deposundan Python kodunun bir kopyasını almanız gerekecek. Aşağıdaki komutu bir terminale yazın:

git klon https://github.com/Wireframe-Magazine/Wireframe-66.git

Alternatif olarak, sıkıştırılmış kodu indir doğrudan Wireframe GitHub sayfasından.

Kodu Parçalamak

Kodun ne işe yaradığını anlamak için önce Excitebike oyununu çalıştırın. Bunu, kaynak koduna giderek ve ardından Pygame Zero kullanarak çalıştırarak yapın:

CD Tel kafes-66/kaynak-code-excitebike/
pgzrunçıkış bisikleti.py

Ardından, kodu görüntülemek için exitebike.py dosyasını bir metin düzenleyiciyle açabilirsiniz.

bu çizmek işlevi, bisiklet görüntüsü hareket ettikçe arka planı çizer. A "blöf" ekranda çizilen bir bloğu ifade eder. Kelime, "arka plan," arka plan görüntüsünü ifade eder (görüntülerin arka plan bloğuna bağlanması, içe aktarılan Pygame Zero modülleri sayesindedir).

kesinçizmek():
ekran.blit("arka plan", (0, 0))
DrawTrack()
bisiklet.çizmek()
ekran.çizim.metin("TUR SÜRESİ: "+str (int (time.time() - startTime))), (20, 555),color=(255,255,255), fontsize=50)
ekran.çizim.metin("SON TUR: "+str (lastLap), topright = (780, 555),color=(255,255,255), fontsize=50)

Tur süresi ve son tur için hesaplamaları da fark edeceksiniz (bu, ekranın alt kısmındaki zaman sayacıyla gösterilir). Tur süresi, sürekli olarak sağ ok tuşuna ilk basış (başlangıç ​​saati) ile geçerli saat arasındaki farkı hesaplıyor.

Son tur da benzer bir hesaplamadır. Başlangıç ​​zamanı yerine, süre, motosikletin önceden tanımlanmış bir yol konumunu geçtiği andan itibaren hesaplanır (şu şekilde belirtilir: takip Pos < -4800 kodda). Aşağıdaki tırnak içindeki öğeler bir görüntüyü temsil etmektedir.

Bu kod, ekranda belirli aralıklarla ve belirli konumlarda görüntü blokları çizer. Sağlanan kitle görüntüsü yalnızca 100 piksel genişliğindedir. Yine de, aşağıdaki kod bilgisayara görüntüyü ne zaman çizeceğini söyler, böylece hareket halindeyken motosikletin arkasında simüle edilmiş bir kalabalık varmış gibi görünür.

Kaya resimleri ekranda iki parça halinde görüntülenir. Aşağıdaki ikinci ve üçüncü kod satırları, sahneyi düzenli bir şekilde simüle etmek için birlikte çalışır.

Python kodunun yedek bir kopyasını oluşturduktan sonra, ekranda kayalara ne olduğunu görmek için aşağıdaki sayıları değiştirmeyi deneyin!

ekran.blit("kalabalık1", ((t*100)+trackOffset-100, 0))
ekran.blit("rock1", ((t*100)+trackOffset-100, 270))
ekran.blit("rock1", ((t*100)+trackOffset-50, 270))

Motosikletinizi Monster kamyon, dört tekerlekli veya başka bir araçla değiştirmek ister misiniz? Belki bir tek boynuzlu atla bitiş çizgisine kadar yarışmak istersin?

Tek yapmanız gereken 50x50 piksel boyutunda (şeffaf arka planlı) bir resim çizmektir. Ardından, bu dosyayı (picture.png) ' klasörüne yerleştirin.Görüntüler' klasörü (içinde kaynak kodu-excitebike dosya). Biraz gerçekçilik katmak için iki görüntü (biri biraz yüksekliğe sahip) oluşturmak isteyeceksiniz. Tek yapmanız gereken referansı ' olarak değiştirmek.bisiklet0' Burada:

bisiklet = Oyuncu('bike0', merkez=(150, 350), bağlantı=('merkez', 'alt'))

Ayrıca resmin adıyla (resim uzantısı olmadan) bir bul ve değiştir eylemi gerçekleştirdiğinizden emin olun.

checkBikeRamp() motosikletinizin (veya kamyonunuzun) rampadan yukarı çıkması (ve eğer şanslıysanız biraz ciddi hava alması) için Y eksenini hesaplama işini yapan işlevdir. bu klavye.sağ Ve klavye.sol parametreler içinde tanımlanır güncelleme() işlev.

Bu kod bitleri, bilgisayara motosikleti yavaşlatmasını veya hızlandırmasını söyler (kullanıcının klavyede hangi tuşa bastığına bağlı olarak). Tercüme: Motosikletiniz ne kadar hızlı hareket ederse, Y ekseninin sayısı o kadar yüksek olur (veya çok büyük sıçrama).

çapraz olarak, on_key_down (anahtar) işlevi, motosikletinizi bir burun dalışına gönderir.

key.name == ise "AŞAĞI":
bisiklet.yön = 1
bisiklet.şeritY = limit(bike.şeritY + 50, 375, 525)
bike.y += bike.direction

bu muckLane parametresi, aşağıdaki hesaplamayı kullanarak motosikletinizi yavaşlatacaktır:

muckLane = int((bisiklet.şeritY-375)/50)+1

Kodun 66. satırı ekranda 'muck' görüntüsünün ne zaman görüntüleneceğini belirler. Bilgisayar artık motosikletinizin çamurun üzerinden ne zaman geçeceğini bildiğine göre, siz pistte çamurun üzerinden geçerken motosikletinizin hızını yarıya indirecek. Daha sonra ne olacağını görmek için muckLane değerini /50'den /25 veya /75'e değiştirin.

Yarışçılar (ahem, Python Programcıları)! Motorlarınızı çalıştırın!

Excitebike'a bu saygıyı sıfırdan programlama konusunda rahat olmasanız bile, bu kod yine de harika bir başlangıçtır. İnce ayar yaparak ve değişikliklerin görsel etkisini fark ederek çok şey öğrenebilirsiniz. Oyununuza daha fazla özellik veya yapay zeka yarışçısı eklemeyi deneyecek misiniz? Göreyim seni!

Küçük bir Python pratiğiyle, denemeniz için başka bir fikir, bitiş çizgisini 4 veya 5 kez geçtikten sonra farklı seviyeler eklemektir. Ayrıca birincilik, ikincilik ve üçüncülük için ödül eklemek isteyebilirsiniz. Birinci sıradaysanız, bir kalabalık tezahürat ses dosyası da ekleyin! Pek çok olasılık vardır.

Excitebike geliştirmelerinizden memnunsanız, neden bir metin macera oyunu yaratmaya çalışmıyorsunuz? Saatler, günler ve hatta haftalar boyunca heyecan verici bir şeyler öğrenmenizi sağlayacak pek çok farklı parça var!