Python Kullanarak Excitebike'a Saygı Gösterin

Python Kullanarak Excitebike'a Saygı Gösterin

Excitebike, bir motosikleti atlamaların üzerinden geçirdiğiniz, engellerin etrafında manevra yaptığınız ve bitiş çizgisine doğru hızlandığınız bir yandan kaydırma oyunudur.





Nintendo, ilk olarak NES için bu BMX yarış oyununu piyasaya sürdü. 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çası, bu NES klasiğini Raspberry Pi veya ev PC'nizde saatlerce eğlenmek için yeniden oluşturabilir.





GÜNÜN YAPILAN VİDEOSU

Kodu Alma ve Ayarlama

Python kodunuzu düzenlemek için nano veya vim kullanabilseniz de, tam özellikli bir metin düzenleyici veya IDE .

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



Bilgisayarınızda python3 kurulu değilse, en son sürümü indir doğrudan Python'dan. Ayrıca isteyeceksiniz PIP'nin kurulu olduğundan emin olun fazla.

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





pip3 install pgzero 

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

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

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





Kodu Kırmak

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

itunes yedekleme konumunu değiştir Windows 10
cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

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

  heyecan bisikleti piton kod parçacığı

bu Berabere işlevi, bisiklet görüntüsü hareket ettikçe arka planı çizer. A ' kalmak ' ekrana çizilen bir bloğu ifade eder. ' arka fon,' arka plan görüntüsüne atıfta bulunur (görüntülerin arka plan bloğuna bağlanması, içe aktarılan Pygame Zero modülleri sayesindedir).

def draw(): 
screen.blit("background", (0, 0))
drawTrack()
bike.draw()
screen.draw.text("LAP TIME: "+str(int(time.time() - startTime)), (20, 555),color=(255,255,255) , fontsize=50)
screen.draw.text("LAST LAP: "+str(lastLap), topright = (780, 555),color=(255,255,255) , fontsize=50)

Ayrıca 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 zamanı, ilk sağ ok tuşuna basış (başlangıç ​​zamanı) ile şimdiki zaman arasındaki farkı sürekli olarak hesaplıyor.

Son tur da benzer bir hesaplamadır. Başlangıç ​​zamanı yerine zaman, motosikletin önceden tanımlanmış bir parkur konumunu geçtiği andan itibaren hesaplanır (olarak belirtilir). izPos < -4800 kodda). Tırnak içindeki aşağıdaki öğeler bir resmi temsil eder.

Bu kod, ekran üzerinde belirli aralıklarla ve belirli konumlarda görüntü blokları çizer. Sağlanan kalabalık görüntüsü yalnızca 100 piksel genişliğindedir. Bununla birlikte, aşağıdaki kod, bilgisayara, hareket ederken motosikletin arkasında simüle edilmiş bir kalabalık varmış gibi görünmesi için görüntüyü ne zaman çizeceğini söyler.

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

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

screen.blit("crowd1", ((t*100)+trackOffset-100, 0)) 
screen.blit("rock1", ((t*100)+trackOffset-100, 270))
screen.blit("rock1", ((t*100)+trackOffset-50, 270))

Motosikletinizi bir 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 istersiniz?

Yapmanız gereken tek şey 50x50px bir resim (saydam bir arka plan ile) çizmektir. Ardından, bu dosyayı (picture.png) ' klasörüne yerleştirin. Görüntüler ' klasörü (içindeki kaynak-kod-eksitebike dosya). Biraz gerçekçilik katmak için iki görüntü (biri biraz daha yüksek bir yüksekliğe sahip) oluşturmak isteyeceksiniz. Tek yapmanız gereken referansı ' olarak değiştirmek. yap burada:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  kamyon ile equitebike piton oyunu

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 ciddi bir hava alması) için Y eksenini hesaplama işini yapan fonksiyondur. bu klavye.sağ ve klavye.sol parametreler tanımlıdı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ı (veya çok büyük atlama) o kadar yüksek olur.

Enine, on_key_down(anahtar) işlevi, motosikletinizi bir dalışa gönderecektir.

if key.name == "DOWN": 
bike.direction = 1
bike.laneY = limit(bike.laneY + 50, 375, 525)
bike.y += bike.direction

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

muckLane = int((bike.laneY-375)/50)+1

Kodun 66. satırı, ekranda 'muck' görüntüsünün ne zaman görüntüleneceğini belirler. Artık bilgisayar, motosikletinizin ne zaman çamurun üzerinden geçeceğini bildiğine göre, siz pistte çamurun üzerinden geçerken motosikletinizin hızı yarı yarıya yavaşlayacaktır. 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 hala 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 AI yarışçısı eklemeye çalışacak mısınız? Göreyim seni!

Kemerinizin altında küçük bir Python alıştırması ile, 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üller eklemek isteyebilirsiniz. İlk sıradaysanız, kalabalığı coşturan bir ses dosyası da ekleyin! Pek çok olasılık vardır.

Excitebike geliştirmelerinizden memnun olduğunuzda, neden bir metin macera oyunu yaratmayı denemiyorsunuz? Saatler, günler ve hatta haftalarca heyecan verici bir şeyler öğrenmenizi sağlayacak birçok farklı parça var!