2014 年春天開始,我在 機率與統計 課程中,加入 Python 程式設計的簡介,算是輔助機率與統計課程的學習。
到期末時,我帶學生們用 Pygame 來寫一個有聲光效果的遊戲,我以 Al Sweigart
這批程式,最大的特色是:
這將使得程式設計的語言障礙可以打破,
進而利於 普及程式教育。
ryCopy: 92 則留言:
import pygame, sys, random from pygame.locals import * # Create the constants (go ahead and experiment with different values) 行數 = 4 列數 = 4 方塊尺寸 = 80 視窗寬度 = 640 視窗高度 = 480 畫面更新率 = 30 空白 = None # R G B 黑色 = ( 0, 0, 0) 白色 = (255, 255, 255) 亮藍 = ( 0, 50, 255) 墨綠 = ( 3, 54, 73) 綠色 = ( 0, 204, 0) 背景顏色 = 墨綠 方塊顏色 = 綠色 文字顏色 = 白色 邊框顏色 = 亮藍 基本字體大小 = 20 按鈕顏色 = 白色 按鈕文字顏色 = 黑色 訊息顏色 = 白色 邊框X座標 = int((視窗寬度 - (方塊尺寸 * 行數 + (行數 - 1))) / 2) 邊框Y座標 = int((視窗高度 - (方塊尺寸 * 列數 + (列數 - 1))) / 2) 上 = '上' 下 = '下' 左 = '左' 右 = '右' def 主函式(): global 畫面更新控制器, 顯示介面, 基本字型, 重置介面, 重置方塊, 新介面, 新方塊, 解答畫面, 解答方塊 pygame.init() 畫面更新控制器 = pygame.time.Clock() 顯示介面 = pygame.display.set_mode((視窗寬度, 視窗高度)) pygame.display.set_caption('Slide Puzzle') 基本字型 = pygame.font.Font('freesansbold.ttf', 基本字體大小) # Store the option buttons and their rectangles in OPTIONS. 重置介面, 重置方塊 = 製造文字('ReSet',文字顏色,方塊顏色,視窗寬度 - 120,視窗高度 - 90) 新介面, 新方塊 = 製造文字('New Game', 文字顏色, 方塊顏色, 視窗寬度 - 120, 視窗高度 - 60) 解答畫面, 解答方塊 = 製造文字('Solve',文字顏色, 方塊顏色, 視窗寬度 - 120, 視窗高度 - 30) 主要區塊, 解答順序 = 產生新題目(80) 解答區塊 = 區塊初始化() 移動記錄 = [] # list of 移動s made from the solved configuration while True: # main game loop 滑向 = None # the 方向, if any, a tile should slide 訊息 = '' if 主要區塊 == 解答區塊: 訊息 = 'Solved!' 繪製畫面(主要區塊, 訊息) 結束檢查() for event in pygame.event.get(): # event handling loop if event.type == MOUSEBUTTONUP: 點擊橫座標, 點擊縱座標 = 取得點擊座標(主要區塊, event.pos[0], event.pos[1]) if (點擊橫座標, 點擊縱座標) == (None, None): # check if the user clicked on an option button if 重置方塊.collidepoint(event.pos): 重置動畫(主要區塊, 移動記錄) # clicked on Reset button 移動記錄 = [] elif 新方塊.collidepoint(event.pos): 主要區塊, 解答順序 = 產生新題目(80) # clicked on New Game button 移動記錄 = [] elif 解答方塊.collidepoint(event.pos): 重置動畫(主要區塊, 解答順序 + 移動記錄) # clicked on Solve button 移動記錄 = [] else: 空位橫座標, 空位縱座標 = 取得空位置(主要區塊) if 點擊橫座標 == 空位橫座標 + 1 and 點擊縱座標 == 空位縱座標: 滑向 = 左 elif 點擊橫座標 == 空位橫座標 - 1 and 點擊縱座標 == 空位縱座標: 滑向 = 右 elif 點擊橫座標 == 空位橫座標 and 點擊縱座標 == 空位縱座標 + 1: 滑向 = 上 elif 點擊橫座標 == 空位橫座標 and 點擊縱座標 == 空位縱座標 - 1: 滑向 = 下 elif event.type == KEYUP: # check if the user pressed a key to slide a tile if event.key in (K_LEFT, K_a) and 有效移動(主要區塊, 左): 滑向 = 左 elif event.key in (K_RIGHT, K_d) and 有效移動(主要區塊, 右): 滑向 = 右 elif event.key in (K_UP, K_w) and 有效移動(主要區塊, 上): 滑向 = 上 elif event.key in (K_DOWN, K_s) and 有效移動(主要區塊, 下): 滑向 = 下 if 滑向: 移動動畫(主要區塊, 滑向, 'Click tile or press arrow keys to slide.', 8) # show slide on screen 移動函式(主要區塊, 滑向) 移動記錄.append(滑向) # record the slide pygame.display.update() 畫面更新控制器.tick(畫面更新率) if __name__ == '__main__': 主函式()
- 回覆very good, music is good, 解釋很自然。
- 回覆口語報告很好。
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- B0129023回覆OK
因BLOGGER無法使用所以分開
YOU TOBE: https://www.youtube.com/watch?v=WqckVGz4vVM&feature=youtu.be
GIT HUB: https://gist.github.com/xjimtim/a1894ca4fe0215b4fe11
SPEAKER: https://speakerdeck.com/xjimtim/b0129023 - 回覆看不到影片
-
-
-
-
-
-
-
-
- 你的程式碼太特別了,
變數1, 2, 3, ......
函式甲、乙、丙、丁、、、
串列1,2,3,4....
完全不具任何語意上的意義!
改成中文是為了增加可讀性,
你這樣改似乎沒有達到目的,
甚至是反其道而行!
ryCopy 8 則留言:
-
http://little-hsuan.blogspot.tw/