ผลต่างระหว่างรุ่นของ "สร้างเกมด้วย Pygame"

จาก Theory Wiki
ไปยังการนำทาง ไปยังการค้นหา
แถว 41: แถว 41:
 
  <span style="color:green;"><b>from practicum import findDevices
 
  <span style="color:green;"><b>from practicum import findDevices
 
  from peri import PeriBoard</b></span>
 
  from peri import PeriBoard</b></span>
 +
 +
class Player(object):
 +
 +
    THICKNESS = 10
 +
 +
    def __init__(self, <span style="color:green;"><b>board,</b></span> pos=WINDOW_SIZE[1]/2, width=100, color=WHITE):
 +
        self.width = width
 +
        self.pos = pos
 +
        self.color = color
 +
        <span style="color:green;"><b>self.board = board</b></span>
 +
 +
    <span style="color:green;"><b>def move(self):
 +
        try:
 +
            self.pos = self.board.getLight()
 +
        except:
 +
            pass</b></span>
 +
 +
def main():
 +
    :
 +
    ball = Ball(speed=(200,50))
 +
    <span style="color:green;"><b>board = PeriBoard(findDevices()[0])</b></span>
 +
    player = Player(<span style="color:green;"><b>board,</b></span> color=pygame.Color('green'),pos=100)
 +
 +
    while not game_over:
 +
        :
 +
        display.fill(BLACK)  # clear screen
 +
        display.blit(score_image, (10,10))  # draw score
 +
        <span style="color:green;"><b>player.move()  # move player</b></span>
 +
        player.draw(display)  # draw player
 +
 +
โค้ดข้างต้นถือว่าต้องมีบอร์ดไมโครคอนโทรลเลอร์เสียบอยู่อย่างน้อยหนึ่งบอร์ดเสมอ
  
 
== ลดการส่ายของไม้ตี ==
 
== ลดการส่ายของไม้ตี ==

รุ่นแก้ไขเมื่อ 00:21, 8 พฤศจิกายน 2557

วิกินี้เป็นส่วนหนึ่งของรายวิชา 01204223

Pygame เป็นโมดูลภาษาไพทอนที่ออกแบบมาเพื่อความสะดวกในการพัฒนาเกม วิกินี้ยกตัวอย่างการสร้างเกมอย่างง่ายที่อาศัยบอร์ดไมโครคอนโทรลเลอร์ในการควบคุมผู้เล่น

การติดตั้ง

สำหรับระบบปฏิบัติการ Ubuntu Linux ใช้คำสั่ง apt-get ติดตั้งได้โดยตรง

sudo apt-get install python-pygame

ส่วนระบบปฏิบัตการ Mac OS X หรือระบบปฏิบัติการอื่น ๆ ให้ดาวน์โหลดตัวติดตั้งจากเว็บไซท์ http://pygame.org/download.shtml

เกมตัวอย่าง: สควอช

เกมที่เราจะใช้เป็นตัวอย่างเรียกว่า Squash ดัดแปลงมาจากเกม Pong ที่เป็นคลาสสิคสุดฮิต ลักษณะการเล่นจะเป็นผู้เล่นตั้งแต่หนึ่งคนขึ้นไปตีลูกกระทบกำแพง และพยายามรับลูกที่สะท้อนกลับมาให้ได้

สนามแข่งสควอช
หน้าจอเกมสควอชต้นแบบที่สร้างด้วย Pygame

โค้ดต้นแบบ

ดาวน์โหลดโค้ดต้นแบบจากลิ้งค์ 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

โค้ดข้างต้นถือว่าต้องมีบอร์ดไมโครคอนโทรลเลอร์เสียบอยู่อย่างน้อยหนึ่งบอร์ดเสมอ

ลดการส่ายของไม้ตี

รองรับผู้เล่นหลายคน

เพิ่มจำนวนลูก

เพิ่มความเร็วเมื่อตีลูกโดน

สุ่มปรับความเร็วในแนวตั้งเมื่อลูกกระทบไม้ตี

เพิ่มแรงโน้มถ่วง