2021年6月29日 星期二

遊戲方法的分析與設定

學習目標:
  • 了解遊戲開發過程與分析!
  • 了解遊戲規則轉換成程式的思維過程!

遊戲流程分析與程式轉化:
  1. 了解遊戲開發過程與分析--以桌遊大富翁遊戲為範本
    • 先畫一張印象中的大富翁遊戲地圖吧!
      PS: 圖片來源:https://www.flickr.com/photos/ottohane/5365053232
    • 傳統大富翁的遊戲規則:(可以自訂,不用完全照抄!)
      1. 遊戲管理員:管理銀行金庫、地產牌、機會牌、命運牌、地產建築公仔或是模型,以及管理遊戲進行順序!
      2. 玩家:可由1~4人遊戲,使用一顆骰子,決定前進步閥數,進行遊戲!每一個步閥數,為地圖上一個框格!每走到落腳停下的框格,按框格規定進行遊戲!
      3. 「機會」與「命運」牌用法:當玩家走到地圖上的「機會」或「命運」框格,就翻開一張,按照牌面上規定進行遊戲動作!用完後由管理員回收,隨機擺放!
      4. 「地產」牌:當玩家走到「地產」框格中,若無主的地產,可向遊戲管理員付費取得「地產」牌!若該玩家再次落腳於其所屬的「地產」框格中,可選擇增加地產建物,提高地產過路費用與價值!其他落腳於該地產的玩家需要依「地產」牌上的規定,支付擁有的玩家過路費用
      5. 地圖上的四個邊角框格:分別為「起點」、「坐牢/過路」、「休息一次」、「再玩一次」!
      6. 環循式的遊戲規則(1):每走完一圈路過「起點」,遊戲管理員發給玩家固定金額的遊戲幣!
      7. 環循式的遊戲規則(2):每位玩家依順序,執行一次遊戲流程,一直輪流到遊戲結束為止!
      8. 其它可增加遊戲樂趣的規定:繳水電費的框格、繳稅的框格、付旅行費用的框格、地產聯合收費...等等!
      9. 遊戲結束條件:任意中止、有玩家破產、有玩家金額到達遊戲目標...等等
    • 剛開始時,請儘量不要規定太複雜的規則!待熟悉程式專案開發流程後,可再追加其功能!

  2. 將遊戲的進行流程,轉換成程式運作流程(pseudocode):
    1. 設定遊戲人數:假設4個人
    2. 輸入玩家名稱,定義玩家的代號:A,B,C,D
    3. 配合每位玩家一開始的遊戲幣
    4. 開始進行遊戲循環(1號玩家->2號玩家->3號玩家->4號玩家->1號玩家...以此類推)
       a). 印出大富翁地圖
       b). 擲骰子
       c). 移動到骰子點數的框格
         I. 可能經過起點
           II. 可能落在邊角框格
           III. 可能是在機會與命運框格
           IV. 可能是在地產框格
       d). 按框格內容,進行遊戲
       e). 檢查支付金額之後,有沒有破產
       f). 檢查是否符合結束遊戲條件
    
    PS:思考重點
    • 先將遊戲過程,一一記錄下來!
    • 把每個流程整理好,將重複的步驟視為一個程式的迴圈!
    • 整理好流程之後,再按該流程,重新玩一次遊戲,檢視是否有遺漏的部份!
    • 可畫成流程圖,協助自己釐清問題!
  3. 地圖範例,以24格地圖為例:
    區塊名稱 編號 區塊名稱 編號 區塊名稱 編號 區塊名稱 編號
     開始  0   沒事一天   6   休息三次  12   再玩一次  18
     日本  1   加拿大   7   英國  13   埃及  19
     南韓  2   美國   8   法國  14   象牙海岸  20
     機會  3   命運   9   機會  15   命運  21
     台灣  4   巴拿馬   10   德國  16   南非  22
     新加坡  5   阿根廷   11   立陶宛  17   印度  23

  4. 參考文獻:

2021年3月6日 星期六

Python 變數用法

學習目標:
  • 了解 Python 變數名稱用法!
  • 了解變數名稱命名技巧!

使用變數練習:
  1. 變數(Variable):可變換的值!
  2. 變數名稱:代表可變換值的名稱!
  3. Python 變數名稱命名技巧:
    • 命名時,儘量可以讓人看出所代表值的意義為何,範例 1:
      >>> radius = 3
      >>> PI = 3.141592
      >>> print('圓面積:', radius * radius * PI)
      28.274328
      
  4. 因為 Python 為動態定型語言,在變數名稱之前,沒有宣告變數的資料型態
  5. 利用 id() 可以查出變數名稱所在的記憶體位置資訊!範例 2:
    >>> print(id(radius))
    
  6. 變數名稱一向是參考到記憶體久的變數值,是故,在運算過程中,也會有變動的情況,範例 3:
    >>> x = 10
    >>> print(id(x))
    >>> x = x + 1
    >>> print(id(x))
    >>> y = [1,2,3]
    >>> print(id(y))
    >>> z = y
    >>> print(id(z))
    >>> y[0] = 10
    >>> z
    
  7. 變數名稱的值,雖然相同,但可能不是同一個記憶體內容的值!範例 4:
    >>> x = [1,2,3]
    >>> y = [1,2,3]
    >>> x == y
    >>> x is y
    
  8. 刪除變數的方式, 範例 5:
    >>> del x
    

Python3 環境設定(二)

設定目標:
  • 在 Windows 10 上安裝 Python 3.9
  • 在 Windows 10 上安裝 VSCode--請參考這一篇
  • 在 Windows 10 上使用 VSCode 做為 Python IDE 環境
快速安裝流程:
  1. 從 Python 官網下載最新版本安裝檔案
  2. 執行安裝檔案!選擇第一項 Install Now 即可!下方兩個選項可勾選!
  3. 同意變更裝置!
  4. 安裝流程無痛進行!
  5. 安裝完成!選擇程式檔案名稱長度的限制!
  6. 同意裝置變更!
  7. 安裝完成!

  8. VSCode 快速設定流程:
    1. 開啟 VSCode !
    2. 使用 Extensions 安裝 Python 程式外掛!
    3. 請按下<Ctrl>+<Shift>+<p>
    4. 輸入並執行 Python: Select Interpreter
    5. 選擇剛才安裝的 Python 套件執行檔程式!
    6. 開一個新專案的目錄!
    7. 開一個新檔案,命名為 hello.py !
    8. 檔案內容輸入之後,按下綠色的箭頭,可查看執行結果!

2021年2月20日 星期六

Python 的基本資料型態(二)

群集型態:
  • Python 支援多種資料結構,包含清單(list)、集合(set)、字典(dict)、Tuple !
  • 每一種資料結構有其使用方式,請注意其不同的使用條件!
清單(list):
  1. 清單(list):其使用特性為有序、具備索引值、內容長度可變動,使用 [] 符號,內容使用逗號區隔!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>> names = ['Peter', 'James', 'Mary']
      >>> names
      ['Peter', 'James', 'Mary']
      >>> print(names)
      ['Peter', 'James', 'Mary']
      >>> print(names[0])
      Peter
      
  2. 可使用 append()、extend()、pop()、remove()、reverse()、sort() 等方法,進行資料結構的調整!
    • 範例 2:
      >>> names = ['Peter', 'James', 'Mary']
      >>> names
      ['Peter', 'James', 'Mary', 'D', 'a', 'v', 'i', 'd']
      >>> names.remove('D')
      >>> names
      ['Peter', 'James', 'Mary', 'a', 'v', 'i', 'd']
      >>> names.remove(names[3])
      >>> names
      ['Peter', 'James', 'Mary', 'v', 'i', 'd']
      >>> names.remove(names[3-4])
      >>> names
      ['Peter', 'James', 'Mary', 'v', 'i']
       (註:因為 3-4 = -1,所以是由後往前數一個欄位)
      >>> names.pop(1)
      'James'
      >>> names
      ['Peter', 'Mary', 'v', 'i']
      (註:pop() 是指要提出哪一個欄位的值!提出後,不寫回原欄位!)
      >>> names.sort()
      >>> names
      ['Mary', 'Peter', 'i', 'v']
      >>> names.append('James')
      >>> names
      ['Mary', 'Peter', 'i', 'v', 'James']
      >>> names.reverse()
      >>> names
      ['James', 'v', 'i', 'Peter', 'Mary']
      >>> names.extend(['David','Poll'])
      >>> names
      ['James', 'v', 'i', 'Peter', 'Mary', 'David', 'Poll']
      
集合(set):
  1. 集合(set):其特色為內容是無序但不重複!使用{}符號包含元素,元素間使用逗號分隔!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>> names = set()
      >>> names
      set()
      >>> names.add('Peter')
      >>> names
      {'Peter'}
      >>> names = {'Peter','Mary'}
      >>> names
      {'Mary', 'Peter'}
      (註:集合會自動排序)
      >>> names.add('Peter')
      >>> names
      {'Mary', 'Peter'}
      >>> names.remove('Peter')
      >>> names
      {'Mary'}
      >>> 'Peter' in names
      False
      
字典(dict):
  1. 字典(dict):成雙成對的 key-value 架構!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>> userpws = {'Peter':32123 , 'David':'abc123'}
      >>> userpws['David']
      'abc123'
      >>> userpws['Peter']
      32123
      >>> userpws['Mary'] = 987654
      >>> userpws
      {'Peter': 32123, 'David': 'abc123', 'Mary': 987654}
      >>> del userpws['David']
      >>> userpws
      {'Peter': 32123, 'Mary': 987654}
      >>> 'Mary' in userpws
      True
      >>> userpws['Mary'] = 12345
      >>> userpws
      {'Peter': 32123, 'Mary': 12345}
      >>> userpws.get('David')
      >>> userpws.get('David')  == None
      True
      >>> userpws.get('David', 'ABC123')
      'ABC123'
      >>> userpws
      {'Peter': 32123, 'Mary': 12345}
      (註:get 只是暫存資料!)
      >>> list(userpws.items())
      [('Peter', 32123), ('Mary', 12345)]
      >>> list(userpws.keys())
      ['Peter', 'Mary']
      >>> list(userpws.values())
      [32123, 12345]
      
      
Tuple(tuple):
  1. Tuple(tuple):有序的資料結構,使用[]指定索引元素!建立之後,就無法變動!
    • 範例 1:
      #python3
      Python 3.8.3 (default, Aug 31 2020, 16:03:14) 
      [GCC 8.3.1 20191121 (Red Hat 8.3.1-5)] on linux
      Type "help", "copyright", "credits" or "license" for more information.
      >>>
      >>> 10,
      (10,)
      >>> 10,20,30
      (10, 20, 30)
      >>> acct = 1, 'Peter', True
      >>> acct
      (1, 'Peter', True)
      >>> type(acct)
      <class 'tuple'>
      >>> print(acct[1])
      Peter
      >>> acct[1] = "Mary"
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      TypeError: 'tuple' object does not support item assignment
      >>> id, names, access = acct
      >>> names
      'Peter'
      >>> access, names, id = id, names, access
      >>> access
      1
      (註:用來置換變數值內容)
      >>> a, *b, c = [1,2,3,4,5]
      >>> b
      [2, 3, 4]
      

Python 學習路徑目錄與資料索引

Python 學習路徑目錄
  1. Python 環境安裝與開發工具設定
  2. Python 資料型態
  3. Python 基本程式寫作
  4. Python 類別與物件的使用
以專案開發為觀點的學習路徑(一)
  1. Python 環境安裝與開發工具設定
    • 工具與基本語法請參考上述項目
    • 以下項目以開發桌遊-簡版大富翁遊戲為開發
  2. 開發之初
  3. 開始進行程式撰寫
以專案開發為觀點的學習路徑(二)
  1. 本次專案項目:Line Bot 聊天機器人的設計
    • 了解 Line Bot 聊天機器人的設計原理
    • 學習 Python 網路程式的設計與運作原理
  2. 事前的原理研究與準備工作
  3. 開始進行專案:
參考文獻

2021年2月17日 星期三

Python3 環境設定(一)

設定目標:
  • 在 CentOS 8 上安裝 Python 3.8
  • 在 CentOS 8 上使用 VSCode 做為 Python IDE 環境
快速操作流程:
  1. 在 CentOS 8 安裝 Python 3.8 版本:
    #dnf install epel-release
    #dnf install python38
    #alternatives --config python3
    (選擇第二個 python3.8 的選項)
    #python3 --version
    
  2. 安裝 VSCode :
    #dnf install code
    
  3. 使用一般使用者來啟動 VSCode:
    $code &
    
  4. 在 VSCode 中,選擇 Python 解譯器:
    a. <Ctrl>+<Shift>+<p>
    b.輸入並執行 Python: Select Interpreter

    c.在選單中選擇 python 3.8.3

    d.視窗左下方的紫色工作列,為 Python 解譯器選擇按鍵,按下即可更換解譯器:
  5. 建立一個 Python 檔案:hello.py
    a.按下工作列上的 File -> NewFile
    b.輸入程式內容:
    msg = "Hello World"
    print(msg)
    

    c.按下工作列上的 File -> Save As ...
    d.選擇儲存的目錄,並且輸入檔案名稱:hello.py
    e.按下右上方綠色箭頭按鍵,即可看到執行結果!
參考文獻:
  • https://djangogirlstaipei.gitbooks.io/django-girls-taipei-tutorial/content/django/admin.html
  • http://dokelung-blog.logdown.com/posts/220832-django-notes-6-manage-your-system-admin

2016年12月12日 星期一

Python 好用的網路資源


  • https://pypi.python.org/pypi/sshtunnel