สารบัญ:

สร้างเกมแข่งรถเกมแรกของคุณ: 10 ขั้นตอน
สร้างเกมแข่งรถเกมแรกของคุณ: 10 ขั้นตอน

วีดีโอ: สร้างเกมแข่งรถเกมแรกของคุณ: 10 ขั้นตอน

วีดีโอ: สร้างเกมแข่งรถเกมแรกของคุณ: 10 ขั้นตอน
วีดีโอ: คุณยายซื้อรถหรู 10 ล้านบาท (Roblox) 2024, พฤศจิกายน
Anonim
Image
Image
ภาพ
ภาพ

หากคุณเคยเขียนโค้ด Python แล้วและต้องการเขียนโปรแกรมเกมที่คุณมีใน Pygame Zero

ในบทช่วยสอนนี้ เราจะเขียนเกมแข่งรถอย่างง่าย

ขั้นตอนที่ 1: ภาพรวมแบบกว้าง

โมดูล Pygame เพิ่มฟังก์ชันมากมายที่ช่วยให้คุณเขียนเกมใน Python

Pygame Zero ก้าวไปอีกขั้นเพื่อให้คุณข้ามขั้นตอนที่ยุ่งยากในการสร้างลูปเกมทั้งหมดและตั้งค่าโครงสร้างโปรแกรมของคุณ

Pygame Zero เป็นตัวเลือกที่ยอดเยี่ยมสำหรับทุกคนที่ต้องการเริ่มเขียนเกมคอมพิวเตอร์บน Raspberry Pi หรือเครื่อง Linux

คุณจะต้องการ:

  • เครื่องที่รัน Linux OS
  • ตัวแก้ไขเขียนโปรแกรม python
  • แป้นพิมพ์
  • จินตนาการบ้าง

ไฟล์:

github.com/AhmNouira/-Racing-Game

ขั้นตอนที่ 2: ข้อกำหนดเบื้องต้น

ก่อนอื่นฉันจะใช้แล็ปท็อปกับ Ubuntu 18.04 OS จากนั้นเราจะรันเกมบน Raspberry Pi ในขั้นตอนที่ 8

ก่อนดำเนินการต่อกับบทช่วยสอนนี้ ตรวจสอบให้แน่ใจว่าคุณได้เข้าสู่ระบบในฐานะผู้ใช้ที่มีสิทธิ์ sudo

การติดตั้ง pip สำหรับ Python 3

เริ่มต้นด้วยการอัปเดตรายการแพ็คเกจโดยใช้คำสั่งต่อไปนี้:

sudo apt อัปเดต

ใช้คำสั่งต่อไปนี้เพื่อติดตั้ง pip สำหรับ Python 3:

sudo apt ติดตั้ง python3-pip

ตรวจสอบการติดตั้งโดยตรวจสอบเวอร์ชัน pip:

pip3 --version

การติดตั้ง Pygame Zero

pip3 ติดตั้ง pgzero --user

สิ่งนี้จะติดตั้ง Pygame ด้วย แพ็คเกจ Pygame ที่รวบรวมไว้ล่วงหน้า

ดังนั้นขั้นตอนแรกในการเดินทางของคุณคือการเปิด Python 3 IDLE หรือโปรแกรมแก้ไข python ที่คุณชื่นชอบ

ขั้นตอนที่ 3: "สวัสดีชาวโลก" ใน Pygame Zero

ตามค่าเริ่มต้น หน้าต่าง Pygame Zero จะเปิดขึ้นที่ขนาดกว้าง 800 พิกเซล สูง 600 พิกเซล คุณสามารถปรับแต่ง

ขนาดของหน้าต่างของคุณ มีตัวแปรที่กำหนดไว้ล่วงหน้าสองตัวแปรที่คุณสามารถตั้งค่าได้ หากคุณรวม WIDTH = 700 HIGH = 800

Pygame zero จัดเตรียมฟังก์ชั่นที่กำหนดไว้ล่วงหน้าเพื่อจัดการกับ game loop ตามปกติ:

ฟังก์ชัน draw()

เราสามารถเขียนฟังก์ชันนี้ลงในโปรแกรมของเราได้เหมือนกับที่เรากำหนดฟังก์ชันใน Python ตามปกติ

Pygame Zero ทำตามกฎการจัดรูปแบบเดียวกับ Python ดังนั้นคุณจะต้องระมัดระวังในการเยื้องโค้ดของคุณอย่างถูกต้อง

#!/usr/bin/python3 # ตั้งค่าล่าม

นำเข้า pgzrun # นำเข้าโมดูล pgzero WIDTH = 700 # ความกว้างของหน้าต่าง HEIGHT = 800 # ความสูงของหน้าต่าง def draw (): # pygame zero draw ฟังก์ชั่น screen.fill ((128, 128, 128)) # เติมหน้าจอด้วย RGB สี screen.draw.text("Hello World!", (270, 320), # draw "Hello World!" color = (255, 255, 255), fontsize = 40) pgzrun.go()

ก่อนอื่นคุณต้องบันทึกไฟล์โปรแกรมของคุณและตั้งชื่อ

จากนั้นเปิดหน้าต่าง Terminal ไปที่ตำแหน่งไฟล์ของคุณและพิมพ์:

./.py

ขั้นตอนที่ 4: การวาดนักแสดงของคุณ

วาดนักแสดงของคุณ
วาดนักแสดงของคุณ

ตอนนี้เรามีฉากของเราแล้ว เราก็สามารถสร้างนักแสดงของเราได้ พวกมันเป็นวัตถุไดนามิกใน Pygame Zero

เราสามารถโหลดนักแสดงโดยพิมพ์ที่ด้านบนของโปรแกรม:

รถ = นักแสดง ("รถแข่ง")

ใน Pygame Zero รูปภาพของเราจะต้องเก็บไว้ในไดเร็กทอรีที่เรียกว่า images ถัดจากไฟล์โปรแกรมของเรา ดังนั้นนักแสดงของเราจะมองหาไฟล์รูปภาพในโฟลเดอร์รูปภาพที่เรียกว่า racecar.png อาจเป็นไฟล์ GIF หรือ-j.webp

คุณสามารถกำหนดตำแหน่งบนหน้าจอโดยพิมพ์:

car.pos = 350, 560

หลังจากนั้นในฟังก์ชัน draw() ของเรา เราสามารถพิมพ์

car.draw() # วาดรถแข่งของเราในตำแหน่งที่กำหนด

โปรแกรมเต็มจะเป็นดังนี้:

#!/usr/bin/python3

นำเข้า pgzrun WIDTH = 700 # ความกว้างของหน้าต่าง HEIGHT = 800 # ความสูงของหน้าต่างรถ = นักแสดง ("รถแข่ง") car.pos = 350, 560 def draw (): # ฟังก์ชัน pygame zero draw screen.fill ((128, 128, 128)) # เติมหน้าจอด้วย car.draw() pgzrun.go()

ทดสอบโปรแกรมของคุณเพื่อให้แน่ใจว่าใช้งานได้

ขั้นตอนที่ 5: ควบคุมนักแสดง

ควบคุมนักแสดง
ควบคุมนักแสดง

เมื่อเราวาดภาพรถบนหน้าจอแล้ว ขั้นต่อไปคือให้ผู้เล่นสามารถเคลื่อนที่ได้

เราสามารถทำได้ด้วยการกดปุ่ม เราสามารถอ่านสถานะของคีย์เหล่านี้ภายในฟังก์ชันที่กำหนดไว้ล่วงหน้าอื่นที่เรียกว่า update()

ฟังก์ชัน update()

ฟังก์ชันนี้ได้รับการตรวจสอบอย่างต่อเนื่องในขณะที่เกมกำลังทำงาน

เราจำเป็นต้องเขียนโค้ดเพื่อตรวจจับการกดแป้นลูกศรและดำเนินการบางอย่างเกี่ยวกับมัน

ดังนั้นเราจะเพิ่มฟังก์ชันนี้ในโปรแกรมของเรา

อัปเดต def ():

if keyboard.left: car.x -=2 if keyboard.right: car.x +=2 if keyboard.up: car.y -=2 if keyboard.down: car.y +=2

รหัสบรรทัดเหล่านี้จะย้ายนักแสดงรถไปทางซ้าย, ขวา, ไปข้างหน้าและข้างหลัง

ขั้นตอนที่ 6: สร้างแทร็ก

สร้างเส้นทาง
สร้างเส้นทาง

ตอนนี้เรามีรถที่สามารถบังคับทิศทางได้แล้ว เราจำเป็นต้องมีรางเพื่อขับต่อไป

เรากำลังจะสร้างการติดตามจาก Actors ทีละแถว เราจะต้องจัดทำรายการเพื่อติดตามนักแสดงที่เราสร้างขึ้น

เราจะต้องตั้งค่าตัวแปรเพิ่มเติมอีกสองสามตัวสำหรับแทร็ก

จากนั้นมาสร้างฟังก์ชันใหม่ที่เรียกว่า makeTrack() ฟังก์ชันนี้จะเพิ่มแทร็ก Actor หนึ่งแทร็กทางด้านซ้ายและอีกอันทางขวา ทั้งคู่ใช้รูปภาพ bare-p.webp

trackLeft = # รายการที่จะจัดเก็บ barries ซ้าย

trackRight = # รายการที่จะจัดเก็บ barries ขวา trackCount = 0 # นับจำนวน barries trackPosition = 350 trackWidth = 150 # ความกว้างระหว่าง barries ด้านซ้ายและขวา def makeTrack (): # ฟังก์ชั่นที่จะทำให้หนึ่ง barrie อยู่ที่ trackCount สากลด้านซ้ายและขวา, trackLeft, trackRight, trackPosition, trackWidth trackLeft.append(Actor("bare", pos = (trackPosition-trackWidth, 0))) trackRight.append(Actor("bare", pos = (trackPosition + trackWidth, 0))) trackCount +=1

สิ่งต่อไปที่เราต้องทำคือย้ายส่วนของแทร็กลงมาที่หน้าจอเข้าหารถ

มาเขียนฟังก์ชันใหม่ที่เรียกว่า updateTrack() กัน ฟังก์ชันนี้จะอัปเดตตำแหน่งที่บล็อกแทร็กจะปรากฏขึ้น แทร็กจะถูกสร้างขึ้นโดยใช้ตัวเลขสุ่ม ดังนั้นการเล่นแต่ละครั้งจึงแตกต่างกัน

trackDriction = เท็จ

SPEED = 4 # กำหนดความเร็วของเกมจากการนำเข้าแบบสุ่ม randint # นำเข้าคลาส randint จากโมดูลสุ่ม def updateTrack (): global trackCount, trackPosition, trackDirection, trackWidth, SPEED b = 0 ในขณะที่ b 32: if trackDirection == False: trackPosition += 16 if trackDirection == True: trackPosition -= 16 if randint(0, 4) == 1: trackDirection = not trackDirection if trackPosition > 700 - trackWidth: trackDirection = True if trackPosition < trackWidth: trackDirection = False makeTrack() # สร้างแทร็กใหม่ที่ด้านบนของหน้าจอ

โปรดดูไฟล์ zip ด้านล่างชื่อ "RaceGameDemo"

หากเรารันโค้ดของเราในตอนนี้ เราควรเห็นทางคดเคี้ยวไปทางรถ ปัญหาเดียวคือเราสามารถเคลื่อนรถข้ามสิ่งกีดขวางบนรางได้ และเราต้องการให้รถอยู่ในนั้นด้วยการตรวจจับการชน

ขั้นตอนที่ 7: รถชน

อุบัติเหตุรถชน
อุบัติเหตุรถชน
อุบัติเหตุรถชน
อุบัติเหตุรถชน
อุบัติเหตุรถชน
อุบัติเหตุรถชน

เราจำเป็นต้องตรวจสอบให้แน่ใจว่ารถของเราไม่แตะต้องนักแสดง

เราอาจทดสอบการชนกันโดยใช้เมธอด colliderect() ในฟังก์ชัน updateTrack() ของเรา

ในเกมนี้เราจะมีสามสถานะที่แตกต่างกันไปยังเกมที่เก็บไว้ใน gameStatus ตัวแปรของเรา:

  • gameStatus == 0 # เกมกำลังทำงาน
  • gameStatus == 1 # รถชน
  • gameStatus == 2 # เกมเสร็จแล้ว

เราจะต้องเปลี่ยนฟังก์ชัน draw() และฟังก์ชัน update() เพื่อตอบสนองต่อตัวแปร gameStatus

สัมผัสสุดท้าย

สิ่งที่เราต้องทำตอนนี้คือแสดงบางอย่างหาก gameStatus ตั้งค่าเป็น 1 หรือ 2 เช่น เราควรแสดงสีแดง

ธงถ้ารถชน เราสามารถทำได้ด้วยรหัสด้านล่าง:

screen.blit("redflag", (230, 230))

เพื่อดูว่ารถถึงเส้นชัยหรือไม่ เราควรนับจำนวนแทร็กที่สร้างขึ้นมา และบางทีเมื่อเราไปถึง 200 ให้ตั้งค่า gameStatus เป็น 2 จากนั้นแสดงธงตาหมากรุก:

screen.blit("finishflag", (230, 230))

นอกจากนี้เรายังจะแสดงข้อความในหน้าจอเช่นคะแนนปัจจุบันของเกม

ดูรายชื่อโค้ดแบบเต็มเพื่อดูว่าทั้งหมดนี้เข้ากันได้อย่างไร

ขั้นตอนที่ 8: เรียกใช้เกมบน Raspberry Pi

รันเกมบน Raspberry Pi
รันเกมบน Raspberry Pi
รันเกมบน Raspberry Pi
รันเกมบน Raspberry Pi

บน Raspberry Pi pgzero ได้รับการติดตั้งโดยค่าเริ่มต้นตั้งแต่เปิดตัว Raspbian Jessie ในเดือนกันยายน 2558

เพียงอัปเดต Raspberry Pi ของคุณโดยใช้คำสั่ง:

sudo apt-get update

ไปที่ตำแหน่งไฟล์ของคุณแล้วพิมพ์ Terminal

pgzrun.py

ขั้นตอนที่ 9: คุณชนะหรือไม่

คุณชนะไหม?
คุณชนะไหม?

คุณสามารถทำให้เกมง่ายขึ้นหรือยากขึ้นได้โดยการเปลี่ยนตัวแปร trackWidth เพื่อทำให้แทร็กมีความกว้างต่างกัน คุณสามารถเปลี่ยนค่าของ SPEED เพื่อให้แทร็กเคลื่อนที่เร็วขึ้นหรือช้าลง

ขั้นตอนที่ 10: สรุป

Pygame Zero เป็นตัวเลือกที่ยอดเยี่ยมสำหรับทุกคนที่ต้องการเริ่มเขียนเกมคอมพิวเตอร์

หากคุณมีคำถามใด ๆ แน่นอนคุณสามารถแสดงความคิดเห็นหากต้องการดูเพิ่มเติมเกี่ยวกับผลงานของฉันโปรดไปที่ช่องของฉัน:

myYouTube

myTwitter

myLinkedin

ขอบคุณที่อ่านคำแนะนำนี้ ^^ และมีวันที่ดี แล้วเจอกัน. อาเหม็ด นูอิรา.

แนะนำ: