ผลต่างระหว่างรุ่นของ "สร้างเกมด้วย Pygame"
Chaiporn (คุย | มีส่วนร่วม) |
Chaiporn (คุย | มีส่วนร่วม) |
||
แถว 3: | แถว 3: | ||
[http://pygame.org Pygame] เป็นโมดูลภาษาไพทอนที่ออกแบบมาเพื่อความสะดวกในการพัฒนาเกม วิกินี้ยกตัวอย่างการสร้างเกมอย่างง่ายที่อาศัยบอร์ดไมโครคอนโทรลเลอร์ในการควบคุมผู้เล่น | [http://pygame.org Pygame] เป็นโมดูลภาษาไพทอนที่ออกแบบมาเพื่อความสะดวกในการพัฒนาเกม วิกินี้ยกตัวอย่างการสร้างเกมอย่างง่ายที่อาศัยบอร์ดไมโครคอนโทรลเลอร์ในการควบคุมผู้เล่น | ||
− | == | + | == การเตรียมตัว == |
+ | === ติดตั้งไลบรารี Pygame === | ||
สำหรับระบบปฏิบัติการ Ubuntu Linux ใช้คำสั่ง <tt>apt-get</tt> ติดตั้งได้โดยตรง | สำหรับระบบปฏิบัติการ Ubuntu Linux ใช้คำสั่ง <tt>apt-get</tt> ติดตั้งได้โดยตรง | ||
แถว 9: | แถว 10: | ||
ส่วนระบบปฏิบัตการ Mac OS X หรือระบบปฏิบัติการอื่น ๆ ให้ดาวน์โหลดตัวติดตั้งจากเว็บไซท์ [http://pygame.org/download.shtml http://pygame.org/download.shtml] | ส่วนระบบปฏิบัตการ Mac OS X หรือระบบปฏิบัติการอื่น ๆ ให้ดาวน์โหลดตัวติดตั้งจากเว็บไซท์ [http://pygame.org/download.shtml http://pygame.org/download.shtml] | ||
+ | |||
+ | === เตรียมบอร์ดไมโครคอนโทรลเลอร์ === | ||
+ | บอร์ดไมโครคอนโทรลเลอร์ที่นำมาใช้เป็นตัวควบคุมผู้เล่นในวิกินี้ต้องถูกโปรแกรมเฟิร์มแวร์ให้สามารถอ่านค่าแสงผ่านพอร์ท USB ได้แล้ว ให้แน่ใจว่า | ||
+ | * ได้พัฒนาเฟิร์มแวร์ตามขั้นตอนของวิกิ [[การติดต่อกับบอร์ด MCU ผ่าน USB ด้วย Arduino]] หรือ [[การจำลองบอร์ด MCU เป็นอุปกรณ์ USB]] (ภาษาซีล้วน) | ||
+ | * เฟิร์มแวร์รองรับการอ่านค่าแสง และได้แก้ไขโมดูล <tt>peri.py</tt> ให้สามารถอ่านค่าแสงในช่วง 0-1023 จากเมท็อด <tt>getLight()</tt> ได้อย่างถูกต้องตามที่ระบุไว้ในแบบฝึกหัดท้ายสไลด์บรรยาย [http://www.cpe.ku.ac.th/~cpj/204223/slides/h7-usb.pdf การสื่อสารกับบอร์ด MCU ผ่านพอร์ต USB] | ||
== เกมตัวอย่าง: สควอช == | == เกมตัวอย่าง: สควอช == |
รุ่นแก้ไขเมื่อ 00:29, 8 พฤศจิกายน 2557
- วิกินี้เป็นส่วนหนึ่งของรายวิชา 01204223
Pygame เป็นโมดูลภาษาไพทอนที่ออกแบบมาเพื่อความสะดวกในการพัฒนาเกม วิกินี้ยกตัวอย่างการสร้างเกมอย่างง่ายที่อาศัยบอร์ดไมโครคอนโทรลเลอร์ในการควบคุมผู้เล่น
เนื้อหา
การเตรียมตัว
ติดตั้งไลบรารี Pygame
สำหรับระบบปฏิบัติการ Ubuntu Linux ใช้คำสั่ง apt-get ติดตั้งได้โดยตรง
sudo apt-get install python-pygame
ส่วนระบบปฏิบัตการ Mac OS X หรือระบบปฏิบัติการอื่น ๆ ให้ดาวน์โหลดตัวติดตั้งจากเว็บไซท์ http://pygame.org/download.shtml
เตรียมบอร์ดไมโครคอนโทรลเลอร์
บอร์ดไมโครคอนโทรลเลอร์ที่นำมาใช้เป็นตัวควบคุมผู้เล่นในวิกินี้ต้องถูกโปรแกรมเฟิร์มแวร์ให้สามารถอ่านค่าแสงผ่านพอร์ท USB ได้แล้ว ให้แน่ใจว่า
- ได้พัฒนาเฟิร์มแวร์ตามขั้นตอนของวิกิ การติดต่อกับบอร์ด MCU ผ่าน USB ด้วย Arduino หรือ การจำลองบอร์ด MCU เป็นอุปกรณ์ USB (ภาษาซีล้วน)
- เฟิร์มแวร์รองรับการอ่านค่าแสง และได้แก้ไขโมดูล peri.py ให้สามารถอ่านค่าแสงในช่วง 0-1023 จากเมท็อด getLight() ได้อย่างถูกต้องตามที่ระบุไว้ในแบบฝึกหัดท้ายสไลด์บรรยาย การสื่อสารกับบอร์ด MCU ผ่านพอร์ต USB
เกมตัวอย่าง: สควอช
เกมที่เราจะใช้เป็นตัวอย่างเรียกว่า Squash ดัดแปลงมาจากเกม Pong ที่เป็นคลาสสิคสุดฮิต ลักษณะการเล่นจะเป็นผู้เล่นตั้งแต่หนึ่งคนขึ้นไปตีลูกกระทบกำแพง และพยายามรับลูกที่สะท้อนกลับมาให้ได้
โค้ดต้นแบบ
ดาวน์โหลดโค้ดต้นแบบจากลิ้งค์ http://www.cpe.ku.ac.th/~cpj/204223/squash.py แล้วนำมาบันทึกไว้ในไดเรคตอรีเดียวกันกับโมดูล practicum.py และ peri.py ที่ได้มาจากการปฏิบัติตามขั้นตอนในวิกิ การติดต่อกับบอร์ด MCU ผ่าน USB ด้วย Arduino ทดลองรันโปรแกรมด้วยไพทอน
python squash.py
ควรปรากฏผลลัพธ์ดังรูปตัวอย่างข้างต้น เกมต้นแบบมีกติกาและการควบคุมดังนี้
- มีผู้เล่นคนเดียว
- ใช้ปุ่มลูกศรขึ้น/ลงเลื่อนไม้ตีของผู้เล่นเพื่อรับลูก
- ทุกครั้งที่รับลูกได้จะได้คะแนนเพิ่ม 1 คะแนน
- หากรับลูกพลาดและลูกกระทบกำแพงด้านซ้ายมือถือเป็นการจบเกม
- กดปุ่ม ESC เพื่อออกจากเกมได้ตลอดเวลา
โครงสร้างคลาสของเกม
class diagram
ควบคุมผู้เล่นด้วยบอร์ดไมโครคอนโทรลเลอร์
import pygame
from pygame.locals import *
from practicum import findDevices
from peri import PeriBoard
class Player(object): THICKNESS = 10 def __init__(self, board, pos=WINDOW_SIZE[1]/2, width=100, color=WHITE): self.width = width self.pos = pos self.color = color self.board = board def move(self): try: self.pos = self.board.getLight() except: pass
def main(): : ball = Ball(speed=(200,50)) board = PeriBoard(findDevices()[0]) player = Player(board, color=pygame.Color('green'),pos=100) while not game_over: : display.fill(BLACK) # clear screen display.blit(score_image, (10,10)) # draw score player.move() # move player player.draw(display) # draw player
โค้ดข้างต้นถือว่าต้องมีบอร์ดไมโครคอนโทรลเลอร์เสียบอยู่อย่างน้อยหนึ่งบอร์ดเสมอ