用 Python 打造你的遊戲
2020
小草、RexWu
ctl12345
(dictionary)
key - value
value 可以有多種型態
key 只能為 string
個人檔案(名字: Rex)
摩斯密碼對照(密碼: 明碼)
菜單(餐點: 價錢)
Others...?
{"name": "Rex", "age": 19, "student?": True}
"name": "Rex"
key
value
dic = {'name': 'Rex', 'age': 19, 'student?': True}
dic = {}
dic = dict()
dic = {'name': 'Rex', 'age': 19, 'student?': True}
print(dic)
#{'name': 'Rex', 'age': 19, 'student?': True}
print(dic['name'])
#Rex
dic = {'name': 'Rex', 'age': 19, 'student?': True}
for key in dic:
print(key)
#name
#age
#student?
for key in dic:
print(dic[key])
#Rex
#19
#True
dic = {}
dic.update({'name': 'Rex', 'age': 19})
生成一個字典
再使用 for 分別 print key 和 value
內容:個人資料 、 成績、菜單
dic = {'name': 'Rex', 'age': 19}
dict['age'] = 20
dic = {'name': 'Rex', 'age': 19}
dic.pop('name')
#'Rex'
del dic['age']
dic.clear()
#清空字典內所有元素
dic = {'name': 'Rex', 'age': 19}
dic.keys()
#dict_keys(['name', 'age'])
dic.value()
#dict_values(['Rex', 19])
Other "containers"
# 裡面有值
a = {1, 2, 3}
b = {2, 4, 6}
# 空的
s = set()
a = {1, 2, 3}
b = {4, 5, 6}
# 新增值
a.add(value)
# 刪除值
a.discard(value)
# 隨機刪除值
a.pop()
# 連集
a | b # = a.union(b)
# 交集
a & b # = a.intersection(b)
# 差集
a - b # = a.difference(b)
# 補集
a ^ b # = a.symmetric_difference(b)
# 判斷 a 是否為 b 的子集合
a.issubset(b)
簡單來說 tuple 就是不可變更的 list
tuples = 'dog', 'cat', 'fish'
a, b, c = tuples
list = ['dog', 'cat', 'fish']
tuple(list)
函數
print()
dict()
list()
input()
.time()
set()
tuple()
len()
.pop()
.push()
.push()
def setName(name):
if(name != None):
return name
else:
print("ERROR! 名字不能為空白!")
return ""
print(setName())
print(setName("小草"))
函數
名稱
參數
(可以空白)
回傳的變數
可以是任意型態
def funcArg(val):
print("沒有參數")
print("參數是 " + str(val))
def funcWithNoArg():
print("沒有參數的函數")
def funcWithReturnValue():
return "有回傳值的函數"
def funcWithNoReturnValue():
print("沒有回傳值的函數")
def funcWithReturnValue():
return "有回傳值的函數"
r = funcWithReturnValue()
print(r)
def greet(name):
print("Hello, " + str(name))
# main
n = input("請告訴我你的名字")
greet(n)
Try & except
x = int(input('請輸入 x :'))
y = int(input('請輸入 y :'))
print(x + y)
整數相加
如果輸入非整數呢?
結果是 => ValueError:
try:
x = int(input('請輸入 x :'))
y = int(input('請輸入 y :'))
print(x + y)
except:
print('輸入錯誤 請輸入整數')
所以要處理例外狀況
使用 「try」和 「except」
def add():
try:
x = int(input('請輸入 x :'))
y = int(input('請輸入 y :'))
print(x + y)
except:
print('輸入錯誤 請輸入整數')
add()
add()
發生例外就結束程式了?
加上 function 看看
物件 - 概念
物件 - 實作
class Player:
def __init__(self, hp, atk, def_, inventory):
self.hp = hp
self.atk = atk
self.def_ = def_
self.inventory = inventory
def attack(self, target):
target.hp = target.def_ - self.atk
def __init__(self, hp, atk, def_, inventory):
物件本體
參數們
self.hp = hp
self.atk = atk
self.def_ = def_
self.inventory = inventory
設定玩家的 hp
設定玩家的 atk
設定玩家的 def
設定玩家的 物品欄