สร้างการแสดงความเคารพต่อ Excitebike โดยใช้ Python

สร้างการแสดงความเคารพต่อ Excitebike โดยใช้ Python

Excitebike เป็นเกมเลื่อนด้านข้างที่คุณขับมอเตอร์ไซค์ข้ามการกระโดด หลบหลีกสิ่งกีดขวาง และความเร็วไปยังเส้นชัย





Nintendo เปิดตัวเกมแข่งรถ BMX สำหรับ NES เป็นครั้งแรก จากนั้น บริษัทก็ได้ปรับปรุง Excitebike ให้ทันสมัยและเปิดตัวใน N64 และในที่สุด Wii





มีคอนโซล NES ไม่มากอีกต่อไป ซึ่งทำให้การเล่น Excitebike ยากขึ้นอีกครั้ง ขอบคุณแฟนๆ ย้อนยุคที่ Wireframe Magazine โค้ดย่อยของ Python สามารถสร้าง NES classic นี้ขึ้นมาใหม่เพื่อความสนุกสนานได้หลายชั่วโมงบน Raspberry Pi หรือพีซีที่บ้านของคุณ





คลิปวิดีโอประจำวันนี้

รับรหัสและตั้งค่า

แม้ว่าคุณจะสามารถใช้ nano หรือ vim เพื่อแก้ไขโค้ด python ของคุณได้ แต่คุณจะต้องการใช้ประโยชน์จากฟีเจอร์เต็มรูปแบบ โปรแกรมแก้ไขข้อความหรือ IDE .

วิธีเปลี่ยนพื้นหลังของรูปภาพ

คุณจะต้องติดตั้ง Pygame Zero เพื่อรองรับคุณสมบัติที่สร้างขึ้นเพื่อเป็นการแสดงความเคารพต่อ Excitebike Pygame Zero มีโมดูล Python สำหรับผู้สร้างเกมที่จะมุ่งเน้นโดยไม่ต้องทำซ้ำพื้นฐานง่ายๆ



หากคุณไม่ได้ติดตั้ง python3 บนพีซี คุณสามารถ ดาวน์โหลดเวอร์ชันล่าสุด จาก Python โดยตรง คุณจะต้องการ ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้ง PIP แล้ว ด้วย.

เมื่อติดตั้ง Python และ PIP เวอร์ชันล่าสุดแล้ว ให้เปิดเทอร์มินัล PowerShell หรือ Linux แล้วพิมพ์:





pip3 install pgzero 

สุดท้าย คุณจะต้องรับสำเนาของโค้ด Python จากที่เก็บ GitHub ของนิตยสาร Wireframe พิมพ์คำสั่งต่อไปนี้ลงในเทอร์มินัล:

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

หรือคุณสามารถ ดาวน์โหลดรหัสไปรษณีย์ โดยตรงจากหน้า Wireframe GitHub





ทำลายรหัส

เพื่อทำความเข้าใจว่าโค้ดใช้ทำอะไร ให้รันเกม Excitebike ก่อน ทำได้โดยไปที่ซอร์สโค้ดแล้วเรียกใช้โดยใช้ Pygame Zero:

cd Wireframe-66/source-code-excitebike/ 
pgzrun exitebike.py

จากนั้น คุณสามารถเปิดไฟล์ exitebike.py ด้วยโปรแกรมแก้ไขข้อความเพื่อดูโค้ด

  ข้อมูลโค้ดหลาม excitebike

ดิ วาด ฟังก์ชันดึงพื้นหลังขณะที่ภาพจักรยานเคลื่อนที่ เอ ' อยู่ ' หมายถึง บล็อคที่วาดขึ้นบนหน้าจอ คำว่า ' พื้นหลัง,' หมายถึงภาพพื้นหลัง (การเชื่อมโยงภาพกับบล็อกพื้นหลังต้องขอบคุณโมดูล Pygame Zero ที่นำเข้า)

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)

นอกจากนี้ คุณจะสังเกตเห็นการคำนวณเวลาเป็นรอบและรอบสุดท้าย (ซึ่งแสดงด้วยตัวนับเวลาที่ด้านล่างของหน้าจอ) เวลารอบจะคำนวณความแตกต่างระหว่างการกดปุ่มลูกศรขวาเริ่มต้น (เวลาเริ่มต้น) และเวลาปัจจุบันอย่างต่อเนื่อง

รอบสุดท้ายเป็นการคำนวณที่คล้ายกัน แทนที่จะเป็นเวลาเริ่มต้น เวลาจะคำนวณจากเมื่อรถจักรยานยนต์ผ่านตำแหน่งแทร็กที่กำหนดไว้ล่วงหน้า (เรียกว่า trackPos < -4800 ในรหัส) รายการด้านล่างในเครื่องหมายคำพูดแสดงถึงรูปภาพ

รหัสนี้ดึงบล็อกรูปภาพบนหน้าจอตามช่วงเวลาและตำแหน่งเฉพาะบนหน้าจอ รูปภาพฝูงชนที่ให้มามีความกว้างเพียง 100px กระนั้น รหัสด้านล่างบอกคอมพิวเตอร์ว่าเมื่อใดควรวาดภาพ เพื่อให้ดูเหมือนมีฝูงชนจำลองอยู่ด้านหลังมอเตอร์ไซค์ขณะเคลื่อนที่

windows 10 ใช้เวลาในการบูตนาน

ภาพหินจะแสดงบนหน้าจอในสองส่วน โค้ดบรรทัดที่สองและสามด้านล่าง ทำงานร่วมกันเพื่อจำลองทิวทัศน์อย่างเป็นระเบียบ

เมื่อคุณสร้างสำเนาสำรองของโค้ด python แล้ว ให้ลองเปลี่ยนตัวเลขด้านล่างเพื่อดูว่าเกิดอะไรขึ้นกับก้อนหินบนหน้าจอ!

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

คุณต้องการเปลี่ยนมอเตอร์ไซค์ของคุณด้วยรถบรรทุกมอนสเตอร์ รถสี่ล้อ หรือยานพาหนะอื่นหรือไม่? บางทีคุณอาจต้องการแข่งยูนิคอร์นให้ถึงเส้นชัย?

สิ่งที่คุณต้องทำคือวาดรูปขนาด 50x50px (พร้อมพื้นหลังโปร่งใส) จากนั้นวางไฟล์นี้ (picture.png) ลงใน ' ภาพ ' โฟลเดอร์ (ภายใน ซอร์สโค้ด excitebike โฟลเดอร์) คุณจะต้องสร้างภาพสองภาพ (ภาพหนึ่งที่มีความสูงเพิ่มขึ้นเล็กน้อย) เพื่อเพิ่มความสมจริง สิ่งที่คุณต้องทำคือเปลี่ยนการอ้างอิงเป็น ' ทำมัน ที่นี่:

bike = Actor('bike0', center=(150, 350), anchor=('center', 'bottom'))
  เกมงูหลาม excitebike พร้อมรถบรรทุก

ตรวจสอบให้แน่ใจว่าได้ดำเนินการค้นหาและแทนที่ด้วยชื่อของรูปภาพ (โดยไม่ใช้นามสกุลรูปภาพ)

checkBikeRamp() เป็นฟังก์ชันที่ทำงานในการคำนวณแกน Y เพื่อให้รถมอเตอร์ไซค์ของคุณ (หรือรถบรรทุก) ขึ้นไปบนทางลาด (และรับลมแรงถ้าคุณโชคดี) ดิ keyboard.right และ keyboard.left พารามิเตอร์ถูกกำหนดไว้ใน อัปเดต() การทำงาน.

โค้ดบิตเหล่านี้บอกให้คอมพิวเตอร์ชะลอความเร็วของมอเตอร์ไซด์หรือเร่งความเร็ว (ขึ้นอยู่กับคีย์ที่ผู้ใช้กดบนแป้นพิมพ์) การแปล: ยิ่งมอเตอร์ไซค์ของคุณเคลื่อนที่เร็วเท่าไหร่ แกน Y ก็ยิ่งมีจำนวนมากขึ้นเท่านั้น (หรือการกระโดดครั้งใหญ่)

ตามขวาง on_key_down(คีย์) ฟังก์ชันจะส่งมอเตอร์ไซค์ของคุณไปสู่การจลาจล

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

ดิ muckLane พารามิเตอร์จะทำให้รถมอเตอร์ไซค์ของคุณช้าลงโดยใช้การคำนวณต่อไปนี้:

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

บรรทัดที่ 66 ของรหัสกำหนดว่าเมื่อใดที่จะแสดงภาพ 'โคลน' บนหน้าจอ เมื่อคอมพิวเตอร์รู้ว่ามอเตอร์ไซค์ของคุณจะผ่านโคลนเมื่อไร มันจะลดความเร็วของมอเตอร์ไซค์ลงครึ่งหนึ่งเมื่อคุณเคลื่อนตัวข้ามโคลนบนลู่วิ่ง เปลี่ยนค่า muckLane จาก /50 เป็น /25 หรือ /75 เพื่อดูว่าจะเกิดอะไรขึ้นต่อไป

นักแข่ง (อะแฮ่ม โปรแกรมเมอร์ Python)! สตาร์ทเครื่องยนต์ของคุณ!

แม้ว่าคุณจะไม่สะดวกใจที่จะตั้งโปรแกรมการแสดงความเคารพต่อ Excitebike ตั้งแต่เริ่มต้น แต่โค้ดนี้ก็ยังคงเป็นไพรเมอร์ที่ยอดเยี่ยม ด้วยการปรับแต่งและตระหนักถึงผลกระทบที่มองเห็นได้จากการเปลี่ยนแปลง คุณสามารถเรียนรู้ได้มากมาย คุณจะลองเพิ่มคุณสมบัติเพิ่มเติมหรือนักแข่ง AI ในเกมของคุณหรือไม่? ไปหามัน!

ด้วยการฝึกฝน Python เล็กน้อยภายใต้เข็มขัดของคุณ แนวคิดอื่นให้คุณลองเพิ่มระดับต่างๆ เมื่อคุณผ่านเส้นชัยหลังจาก 4 หรือ 5 ครั้ง เช่นกัน คุณอาจต้องการเพิ่มรางวัลสำหรับที่หนึ่ง สอง และสาม หากคุณเป็นอันดับหนึ่ง ให้เพิ่มไฟล์เสียงที่ให้กำลังใจด้วย! มีความเป็นไปได้มากมาย

เมื่อคุณพอใจกับการปรับปรุง Excitebike ทำไมไม่ลองสร้างเกมผจญภัยแบบข้อความดูล่ะ มีหลายส่วนที่จะรับประกันว่าคุณกำลังเรียนรู้สิ่งที่น่าตื่นเต้นเป็นเวลาหลายชั่วโมง วัน หรือแม้แต่สัปดาห์!