林尚廷
No Code No Life :: A competitive programmer
王政祺、林尚廷、劉至軒
兵者,國之大事,死生之地,存亡之道,不可不察也。
孫子兵法
玩遊戲
寫程式
Python
故經之以五事,校以之計,而索其情:
1P
← →:左右移動
↑↓:上下舉劍
2P
A D:左右移動
W S:上下舉劍
媽!我會走路了!
1P
V:跳躍
B:攻擊
2P
<:跳躍
>:攻擊
哪有只能動的道理?
按住下舉劍 + 攻擊 = 下刺
按住上舉劍 + 攻擊 = 上刺
1P + 2P
移動時 + 長按攻擊 = 丟劍
按住上舉劍 + 丟劍 = 上丟劍
按住下舉劍 + 丟劍 = 軟丟劍
騰空 + 按住下舉劍 + 丟劍 = 下丟劍
武器不是拿來扔的嗎?不然要幹嘛
1P + 2P
按住下舉劍 + 跳 = 蹲下
移動時 + 蹲下 = 貼地滑行
蹲下或滑行時剛好腳下有劍 = 撿劍
扔掉的劍將何去何從?
從對方的頭上踩下去可以使人遲鈍
沒劍也可以舉劍,變成舉拳腳
無劍騰空時向對方 (下+攻擊) 可以踢掉對方的劍
無劍且對方騰空時可以 (上+攻擊) 踢掉對方的劍
重生可以獲得劍,但一張地圖最多四支劍
小技巧 & 小知識
1P + 2P
跑到對面最底端 = 獲勝
殺人 = 取得 Go,有 Go 才能往下一張地圖跑
沒有 Go 的一方跑往下一張地圖 = 瞬移
啊... 是要怎麼贏啊,我都殺他十次了
夫未戰而廟算勝者,得算多也;
未戰而廟算不勝者,得算少也。
多算勝,少算不勝,而況於無算乎?
吾以此觀之,勝負見矣。
凡用兵之法,馳車千駟,革車千乘,帶甲十萬,千里饋糧,則內外之費,賓客之用,膠漆之材,車甲之奉,日費千金,然後十萬之師舉矣。
上次三位 kahoot 的贏家,記得拿飲料喔 XD
輸了沒拿到怎麼辦 QAQ
兵家勝敗真常事,捲甲重來未可知
知兵之將,生民之司命,國家安危之主也
Python is powerful... and fast;
plays well with others;
runs everywhere;
is friendly & easy to learn;
is Open.
善用兵者,役不再籍,糧不三載,取用於國,因糧於敵,故軍食可足也。
不盡知用兵之害者,則不能盡知用兵之利也。
地者,高下、遠近、險易、廣狹、死生也。
Windows 搜尋「環境變數」
打開「編輯系統環境變數」再打開「環境變數」
找到並打開 "Path" 這個變數,並將電腦中 "python.exe" 的路徑複製上去
打開 cmd,打 "python" 出現 >>> 就代表 OK 了喔
For Windows
地者,高下、遠近、險易、廣狹、死生也。
懶人工具
記得要用半形驚嘆號!
你的 cmd 出現 >>> 了嗎?
Try this!
>>> print("Hello Python!")
記得要用半形驚嘆號!
單雙引號是一樣的喔 XD
Try this!
>>> print('Hello Python!')
記得要用半形驚嘆號!
行尾要加分號嗎;
Try this!
>>> print("Hello Python!");
昔殷之興也,伊摯在夏;周之興也,呂牙在殷。
昔殷之興也,伊摯在夏;周之興也,呂牙在殷。
將檔案存成 ".py" 編輯器就會幫你上色啦! 還有自動完成喔XD
故殺敵者,怒也;取敵之利者,貨也。
cd 到檔案位置之後用 python 關鍵字 + 檔名執行!
將者,國之輔也。輔周則國必強,輔隙則國必弱。
註解是不會被執行的東西 = ="
Try this!
print("Hello Python!");
# print("foo")
""" print("bar")
print("bar") """
一曰度,二曰量,三曰數,四曰稱,五曰勝。
變數像一個容器可以存放數字、字串、各種東西
Try this!
num = 2147483647
print(num) # 2147483647
school = "Jianguo"
print(school) # Jianguo
用兵之法,無恃其不來,恃吾有以待也;無恃其不攻,恃吾有所不可攻也。
input('提示字') / print('輸出字')
Try this!
x = input()
print("Hello", x)
x = input('insert x')
print("x = ", x)
- 我不要換行啦 QQ
- 我不要空格啦 QQ
Try this!
print('Hello', 'Python')
print('Hello', 'Python', end = '!')
print('Hello', 'Python', sep = '')
print('A', 'C', sep = 'b', end = 'd')
- 怎麼加法啊 QQ
Try these!
x = input()
print(x + 1)
x = int(input())
print(x + 1)
x = input()
print(x + '1')
x = int(input())
print(x + '1')
name = input()
print("Hello,", name, "how old are you?")
age = input()
print("That is very young! What is your favourite food?")
food = input()
print("Oh! I really like", food, "too! We have very similar tastes!")
範例
孫子曰: 凡用兵之法,馳車千駟,革車千乘,帶甲十萬,千里饋糧,則內外之費,賓客之用,膠漆之材,車甲之奉,日費千金,然後十萬之師舉矣。
其用戰也勝,久則鈍兵挫銳,攻城則力屈,久暴師則國用不足。夫鈍兵挫銳,屈力殫貨,則諸侯乘其弊而起,雖有智者不能善其後矣。故兵聞拙速,未睹巧之久也。夫兵久而國利者,未之有也。故不盡知用兵之害者,則不能盡知用兵之利也。
用兵之法:興兵作戰需要準備的物資
饋糧:運送糧食
賓客之用:招待使節、策士的用度
膠漆之材:用於武器維修的膠漆等材料費用
用戰也勝:軍隊作戰就要求速勝
國用:國家財用
屈力殫貨:軍事實力耗盡,國內物資枯竭
善用兵者,役不再籍,糧不三載,取用於國,因糧於敵,故軍食可足也。國之貧於師者遠輸,遠輸則百姓貧;近師者貴賣,貴賣則百姓財竭,財竭則急於丘役。力屈財殫,中原內虛於家,百姓之費,十去其七;公家之費,破軍罷馬,甲冑矢弓,戟盾矛櫓,丘牛大車,十去其六。
役不再籍,糧不三載:不用再次徵集兵員,不用多次運送軍糧
取用於國,因糧於敵:武器裝備由國內供應,從敵人那裡設法奪取糧食
遠輸:長途運輸
貴賣:物價飛漲
急於丘役:賦稅和勞役加重
故智將務食於敵,食敵一鐘,當吾二十鐘;忌桿一石,當吾二十石。
故殺敵者,怒也;取敵之利者,貨也。車戰得車十乘以上,賞其先得者,而更其旌旗。車雜而乘之,卒善而養之,是謂勝敵而益強。
故兵貴勝,不貴久。 故知兵之將,民之司命。國家安危之主也。
務食於敵:在敵國解決糧草問題
怒:激勵
貨:獎賞
雜而乘之,善而養之:把搶得的戰車編入我方車隊,善待俘虜使他們歸順。
勝敵而益強:戰勝敵人而使自己越發強大
民之司命:掌握著民眾生死的人
孫子曰:凡用兵之法,全國為上,破國次之;全軍為上,破軍次之;全旅為上,破旅次之;全卒為上,破卒次之;全伍為上,破伍次之。是故百戰百勝,非善之善者也;不戰而屈人之兵,善之善者也。
這節課凡是少於十的數字都是用上古漢語標註!
趕快記起來!
與資料型別來蕉流蕉流
integer (int) : 整數
num1 = int(input()) #輸入一個整數
num2 = int(32.0) #將浮點數變成整數
最常用到的!
integer (int) : 整數
num1 = float(input()) #輸入一個整數
num2 = float(226) #將整數變成浮點數
float (float) : 浮點數(小數)
num1 = int(input()) #輸入一個整數
num2 = int(32.0) #將浮點數變成整數
最常用到的!
由於電腦沒辦法完整儲存無限多位的小數點可能會有誤差,請酌量食用
integer (int) : 整數
num1 = float(input()) #輸入一個整數
num2 = float(226) #將整數變成浮點數
float (float) : 浮點數(小數)
num1 = int(input()) #輸入一個整數
num2 = int(32.0) #將浮點數變成整數
最常用到的!
由於電腦沒辦法完整儲存無限多位的小數點可能會有誤差,請酌量食用
我沒打錯字
之前有遇到過!是存一串字元的一個資料型別
name = input()
print("Hello, " + name + "!")
name = "INFOR"
print("Hello, " + name + "!")
name = 'INFOR'
print("Hello, " + name + "!")
用雙引號、
單引號都行!
註:其他語言幾乎都會分!
var = 50
print(type(var))
就用type函式而已XD
<class 'int'>
加法
a = 2
b = 2147483645
print(a + b)
2147483647
加法
a = 2
b = 2147483645
print(a + b)
2147483647
減法
a = 65
b = 23
print(a - b)
42
加法
a = 2
b = 2147483645
print(a + b)
2147483647
減法
a = 65
b = 23
print(a - b)
42
乘法
a = 32
b = 16
print(a * b)
512
小數除法
a = 3
b = 2
print(a / b)
1.5
整數除法
a = 3
b = 2
print(a // b)
1
小數除法
a = 3
b = 2
print(a / b)
1.5
整數除法
a = 3
b = 2
print(a // b)
1
一個/兩個斜線!
小數除法
a = 3
b = 2
print(a / b)
1.5
整數除法
a = 3
b = 2
print(a // b)
1
直接除一波
只取商:
模數 (取餘數)
a = 72
b = 7
print(a % b)
2
次方
a = 2
b = 5
print(a ** b)
32
故用兵之法,十則圍之,五則攻之,倍則分之,敵則能戰之,少則能逃之,不若則能避之。故小敵之堅,大敵之擒也。
等於
print(3 == 3)
True
不等於
print(3 != 5)
True
小於
print(2 < 7)
True
小於或等於
print(2 <= 5)
True
大於
print(1000 > 1)
True
大於或等於
print(3 >= 3)
True
邏輯且
print(2 < 7 and 10 >= 9)
True
邏輯或
print(3 > 5 or 3 <= 5)
True
邏輯非
print(not 10 < 5)
True
孟子曰:「予豈好辯哉?予不得已也。」
得為真若且唯若
兩邊都為徵真
為真若且唯若
兩邊其中一者都為真,兩個都真當然也可以
得為真若且唯若
後面的不為真
接下來有三個問題,請回答以練習
對邏輯運算子的敏銳度
雖然各位不是總統(參選年齡限制是四十歲)但是大家都是高中生!
今天是禮拜五沒有錯!不過有十一個not,所以就是False了!
不過有反例
夫將者,國之輔也。輔周則國必強,輔隙則國必弱。
「上善若水,水善利萬物而不爭。」
「上善若水,水善利萬物而不爭。」
「如果這樣就那樣,否則如果那樣就這樣,否則就那樣」
src: xkcd
if [某邏輯判斷]:
做事
elif [某邏輯判斷]:
做其他的事
else:
做比其他更其他的事
可以有很多個elif!
程式會找第一個符合的進去跑裡面的程式,其他的就不跑了
若都不符合,那可以寫else,處理都不符合以上條件的case
score = 73
if score >= 90:
print("Wow! You scored over 90 points!")
elif score >= 30 and score <= 60:
print("Retake the test")
elif score < 30:
print("R.I.P.")
else:
print("You did pretty good! Keep going!")
You did pretty good! Keep going!
有問題隨時舉手!
兵眾孰強?
「閒雲潭影日悠悠,物換星移幾度秋。」
唐. 王勃〈滕王閣〉
for x in range(5):
print(x)
變數名稱!可以任意取
會從reːŋs(零)跑到hljids(四)
空格表示在迴圈內
0
1
2
3
4
for x in range(3, 7, 2):
print(x)
數字一定小於sn̥ʰid(七)
一開始是suːm(三)
然後每次跳njis(二)
3
5
有一個我for loop,就可以有千千萬萬個我for loop!
for x in range(5):
for y in range(5):
print("x = " + x + ", y = " + y)
x = 0, y = 0
x = 0, y = 1
x = 0, y = 2
x = 1, y = 0
x = 1, y = 1
x = 1, y = 2
x = 2, y = 0
x = 2, y = 1
x = 2, y = 2
res = 0
n = 10
for x in range(n + 1):
res = res + x
print(x)
55
可以改成輸入一個數字而不是寫死的嗎?
請練習用for迴圈而不要用公式解!
有問題隨時舉手!
士卒孰練?
*
**
***
****
*****
五階的三角形
昔之善戰者,先為不可勝,以待敵之可勝。
學而時習之 不亦胖乎
資料型別
資料型別
複習得啦 XD
<class 'str'>
<class 'int'>
<class 'float'>
<class 'bool'>
...
Integer = input()
print(type(Integer))
A = input()
print(type(2 * A))
2qbx = int(input())
print(type(2qbx))
A = 3.0
print(type(2 * A))
A = 3.0
print(type(2 > A))
A = 3.0
print(type(2 or A))
print(type(chr(ord('a'))))
print(type(print))
print(type(type))
mp4算子
print(2 + 2)
print(2 >= 2)
print(2.3 and 2)
print(0.0 and 2)
print(3 / 2)
print(3 // 2)
print(2.3 // 2)
print(0 or 0.0)
print(0 and 0.0)
x = int(input())
print(x + 2.3 > x + 2)
x = int(input())
print(int(x + 2.3) > x + 2)
i = 3
for i in range (5):
i += 1
print(i)
i = 3
if i in range (5):
i += 1
print(i)
suum, sum = 3, 0
for i in range (10, 3, -2):
sum += i
print(suum + sum)
for 軟 in range(0, -1):
print(軟)
逝者如斯夫 不捨晝夜
只要肚子餓了,我就一直吃東西
只要爸媽還沒回家,我就繼續打電動
只要這一題還沒AC我就繼續debug
只要還沒中樂透,我就繼續買彩券
有沒有人可以再舉例子?
while [某個條件符合]:
做事
關鍵字!
遇到需要跳過的條件,分為
「先不要」 (continue)
和
「絕對不要」(break)
兩種
遇到錯誤的東西會直接進行迴圈的下一輪,等同於直接跳到迴圈開始,並且進入下一輪
while x < 100:
if x > p:
continue
做事做事
做事做事
做事做事
做事做事
做事做事
糖炒例子:
當符合第njis(二)行的條件,那會直接跳回第二行
遇到錯誤的東西會直接跳出迴圈,不幹了
while x < 100:
if x > p:
break
做事做事
做事做事
做事做事
做事做事
迴圈外的事
糖炒例子:
當符合第njis(二)行的條件,那會去做第kuʔ(九)行的事
for n in range(10):
if n % 2 == 0:
continue
print(n)
for n in range(10):
if n % 9 == 0:
break
print(n)
輪迴(梵語:संसार,轉寫:Saṃsāra),是一種思想理論,認為生命會以不同的面貌和形式
x = 7
while x > 0:
x = x + 1
print(x)
永遠都會符合條件!
程式跑不完!
有兩種方法可以解決:
1. 避免寫出會爆的程式
2. 常念阿彌陀佛
皇天不負苦瓜人!
多多去玩,修改,寫程式才會進步!
就是一堆咚咚
[]
一個中括號
[9, 8.0, '2qbx', [4, 5]]
中括號裡面可以放所有東西
a = [9, 8.0, '2qbx', [4, 5]]
print(a)
print(a[0])
輸出 & 取值
a = [9, 8.0, '2qbx', [4, 5]]
a.append(5)
a.extend([4, 'miku'])
print(a)
加值機
a = [9, 8.0, '2qbx', [4, 5]]
for i in a:
print(i)
列舉
a = [9, 8.0, '2qbx', [4, 5]]
print(a[-2])
print(a[0:3])
print(a[1:])
print(a[-1:])
print(a[0:-1])
print(a[3:-3])
del a[3]
print(a)
try try see
a = [9, 4, 8, 8, 7]
print(len(a))
print(max(a) - min(a))
print(a.count(8))
a.sort()
a.reverse()
print(a)
更多東西 猜猜看它在幹嘛!
a = [9, 4, 8, 8, 7]
print(min(a) or max(a))
修改一個字元 使得輸出變成 9
a = input().split(' ')
for i in range(len(a)):
a[i] = int(a[i])
# code here
一開始輸入 N 個數字 找出第 K 大的數值
對於每一個\(x\)值,都恰有一個\(y\)值與之對應,則稱\(y\)是\(x\)的函數
-- 國中數學老師
def 函數名稱(引數一, 引數二 ...):
做事坐視作勢;
return 回傳值
def 加法(欸, 逼):
return 欸 + 逼
print(加法(5, 2))
簡單 Java
def 吠市樹烈(恩):
if 恩 <= 1:
return 恩
else:
return 吠市樹烈(恩 - 1) + 吠市樹烈(恩 - 2)
print(吠市樹烈(5))
吠市樹烈第恩項
def 吠市樹烈(恩):
樹烈 = [0, 1]
for 項數 in range(2, 恩+1):
樹烈.append(樹烈[-1] + 樹烈[-2])
return 樹烈
print(吠市樹烈(5))
吠市樹烈前恩項
list 也可以當回傳值!
def 執行(操作, 欸, 逼):
return 操作(欸, 逼)
def 加法(欸, 逼):
return 欸 + 逼
print(執行(加法, 3, 5))
函數也可以是函數的引數!
加法 = lambda 欸, 逼: 欸 + 逼;
print(加法(3, 5))
print((lambda 欸, 逼: 欸 + 逼)(2, 4))
IPA: [lamða]
def 取得函數(運算):
加法 = lambda 欸, 逼: 欸 + 逼;
乘法 = lambda 欸, 逼: 欸 * 逼;
if 運算 == '加法':
return 加法
else:
return 乘法
print(取得函數('加法')(3, 5))
print(取得函數('乘法')(3, 5))
函數也可以是函數的回傳值!
def 微分(欸夫):
# code here
return 欸夫的微分
def 函數(愛克斯):
return 2*(愛克斯**2) + 7
print(微分(函數)(5))
設計一個函數\(F\)
它接受一個函數\(f\),回傳一個函數\(f'\) (\(f\)的微分)
凡治衆如治寡,分數是也;鬥衆如鬥寡,形名是也;
三軍之衆,可使必受敵而無敗者,奇正是也;
兵之所加,如以碫投卵者,虛實是也。
有興趣者請轉至週一C++演算法課
# 宣告一個新的 set
qbx = {"Miku", "Ranran", "Ramen", "WW5"}
# 輸出整個 set
print(qbx)
# 依序輸出 set 裡的每個元素
for i in qbx:
print(i)
有人發現問題嗎???
# 宣告一個新的 set
programmer = {"Computer", "Algorithm", "Python", "Miku"}
# 加入一個元素
programmer.add("liver")
# 刪除一個元素
programmer.remove("Miku")
-李斯 諫逐客書-
# 宣告一個新的 set
programmer = {"Computer", "Algorithm", "Python", "Miku"}
# 加入一個元素
programmer.add("liver")
# 刪除一個元素
programmer.discard("Miku")
# 宣告一個新的 set
programmer = {"Computer", "Algorithm", "Python", "Liver"}
# 得到set的size
print(len(programmer))
-蘇軾 赤壁賦-
ericxiao = {"Biology", "Earth science"}
# 將兩個 set 合併
IOI2020 = programmer.union(ericxiao)
-李斯 諫逐客書-
subject = {"Biology", "Earth science"}
# 刪除整個set內的元素
subject.clear()
# 刪除整個set
del subject
-老子 道德經-
-王粲 登樓賦-
實作一個代辦事項清單,可以支援使用者隨時增加事項與刪除已完成事項,並能夠隨時輸出當前的代辦清單。
Infor32 = {
"Ericxiao": "C+++Algorithm",
"Thomas": "MachineLearning",
"25871014": "Python"
}
print(Infor32)
Infor32 = {
"Ericxiao": "C+++Algorithm",
"Thomas": "MachineLearning",
"25871014": "Python"
}
print(Infor32["25871014"])
print(Infor32.get("25871014"))
Eric = {
"Age": 17,
"Grade": 11,
"Score": 799
}
Eric["Score"] = 800
INFOR32 = {
"Eric": {
"Age": 17,
"Grade": 11,
"Score": 800
},
"Sean": {
"Age": 16,
"Grade": 11
}
}
print(INFOR32["Eric"]["Score"])
-王羲之 蘭亭集序-
實作一個個人資料登記表,輸入一個人的姓名、年紀、身高、體重並紀錄之,每次可以用一個人的名字查到他的基本資料
class Person:
name = "03t"
age = 17
p1 = Person()
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
p1 = Person("Eric", 17)
class Person:
def __init__(self, name, age):
self.name = name
self.age = age
def hello(self):
print("Hello my name is " + self.name)
p1 = Person("Eric", 17)
p1.hello()
練習:
請實作出一個封神榜的dictionary,裏頭有2~4個封神榜裡的重要人物,由於怕有人看不懂上古漢語,因此這些人物必須有將數字轉為上古漢語數字的能力,並且替每個角色設計一個特殊能力
(Hint: object裡可以有函數!)
孫子曰:凡先處戰地而待敵者佚,後處戰地而趨戰者勞。故善戰者,致人而不致於人。
A: 欸我的code又吃CE了,你要不要幫我debug
B: 你的變數忘記宣告了啦,而且這裡要加分號
A: 可是我是Python欸QQ
B: 那你幹嘛用DevC++啦
循序
選擇
重複
資料結構不外乎
變數
List
頂多多個 Set, Dictionary
但是那個太難了 國際競賽才會出現
class people:
height = 157.4
thomas = people()
print(thomas.height)
thomas.height = 180
print(thomas.height)
class people:
def __init__(self, height):
self.height = height
thomas = people(157.4)
print(thomas.height)
class people:
def __init__(self, height):
self.height = height
def eat(self, food):
self.height += food
thomas = people(157.4)
print(thomas.height)
thomas.eat(0.1)
print(thomas.height)
class people:
def __init__(self, height):
self.height = height
class hunter(people):
def __init__(self, height, skill):
super().__init__(height)
self.skill = skill
def hunt(self):
print('hunting with skill', self.skill)
class farmer(people):
...
...
thomas = hunter(157.4, 100)
thomas.hunt()
不但能搶,還能搶過來再改掉
class people:
def __init__(self, height):
self.height = height
def eat(food):
self.height += food
class hunter(people):
def __init__(self, height, skill):
super().__init__(height)
self.skill = skill
def hunt(self):
print('hunting with skill', self.skill)
def eat(self, food):
self.height += food
self.skill += food / 10
thomas = hunter(157.4, 100)
thomas.eat(100)
thomas.hunt()
東西可以跟東西比大小
東西可以跟東西加 加起來可以是奇怪的東西
class 軟軟:
def __init__(self, 軟肚子):
self.軟肚子 = 軟肚子
def __gt__(self, other):
return self.軟肚子 > other.軟肚子
雪初音 = 軟軟(40)
聖誕軟 = 軟軟(50)
print(雪初音 > 聖誕軟)
__lt__
__le__
__gt__
__ge__
__eq__
__ne__
__add__
__iadd__
__sub__
__isub__
__mul__
__imul__
__truediv__
__iturediv__
__floordiv__
__ifloordiv__
__mod__
__imod__
__pow__
__ipow__
class 軟軟:
def __init__(self, 軟肚子):
self.軟肚子 = 軟肚子
def __gt__(self, other):
return self.軟肚子 > other.軟肚子
def __add__(self, other):
return self.軟肚子 + other.軟肚子
雪初音 = 軟軟(40)
聖誕軟 = 軟軟(50)
print(雪初音 > 聖誕軟)
孫子曰:凡用兵之法,將受命於君,合軍聚衆,交和而舍,莫難於軍爭。
# mod.py
def add(a, b):
return a + b
import mod
a = int(input())
b = int(input())
print(mod.add(a, b))
# mod.py
class people:
def __init__(self, height):
self.height = height
import mod
thomas = mod.people(157)
print(thomas.height)
有人說Python很爛,是因為太多套件
有人喜歡用Python,也是因為太多套件
numpy
scipy
socket
Keras
Pygame
pip install 套件名稱
# 引入 numpy 模組
import numpy as np
np1 = np.array([1, 2, 3])
np2 = np.array([3, 4, 5])
np3 = np.zeros([2, 3])
# array([[ 0., 0., 0.], [ 0., 0., 0.]])
np4 = np.ones([2, 3])
# array([[ 1., 1., 1.], [ 1., 1., 1.]])
# 引入 numpy 模組
import numpy as np
np1 = np.array([1, 2, 3])
np2 = np.array([3, 4, 5])
# 陣列相加
print(np1 + np2) # [4 6 8]
# 顯示相關資訊
print(np1.ndim, np1.shape, np1.dtype)
# 1 (3,) int64 => 一維陣列, 三個元素, 資料型別
np3 = np.array([1, 2, 3, 4, 5, 6])
np3 = np3.reshape([2, 3])
print(np3.ndim, np3.shape, np3.dtype) # 2 (2, 3) int64
np3 = np3.astype('int64')
np3.dtype # dtype('int64')
np3 = np.array([1, 2, 3, 4, 5, 6])
print(np3[2]) # 3
np3 = np3.reshape([2, 3])
print(np3[1, 0]) # 4
np3 = np.array([1, 2, 3, 4, 5, 6])
print(np3 > 3) # [False False False True True True]
print(np3[np3 > 3]) # [4 5 6]
np3 = np.array([1, 2, 3, 4, 5, 6])
np3 = np3.reshape([2, 3])
print(np3.sum(axis=1)) # 將 axis=1 橫向加總 [6 15]
print(np3.sum(axis=0)) # 將 axis=0 直向加總 [5 7 9]
# 引入模組
import numpy as np
import matplotlib.pyplot as plt
# 折線圖
x = np.array([3, 5, 3, 6])
y = np.array([4, 6, 8, 2])
plt.plot(x, y)
plt.show()
# 散佈圖
x = np.array([1, 3, 2, 8, 9])
y = np.array([4, 5, 3, 6, 3])
plt.scatter(x, y)
plt.show()
# 圓餅圖
data = np.random.randint(1, 11, 5) # 生成
x = np.arange(len(data))
plt.pie(data)
plt.show()
# 長條圖
labels = ['Physics', 'Chemistry', 'Literature', 'Peace']
foo_data = [3, 6, 10, 4]
bar_width = 0.5
xlocations = np.array(range(len(foo_data))) + bar_width
plt.bar(xlocations, foo_data, width=bar_width)
plt.title('Stock Price')
plt.show()
孫子曰:凡用兵之法,將受命於君,合軍聚眾。圮地無舍,衢地合交,絕地無留,圍地則謀,死地則戰。途有所不由,軍有所不擊,城有所不攻,地有所不爭,君命有所不受。
(State Machine)
類似一個流程圖,將遊戲的所有可能狀態與連結關係都紀錄於其中
圈圈加箭頭的東東
想像現在是1979年,你/妳是軟體公司Namco的一個員工,你/妳想要開發一個遊戲,稱為「Pacman」,你/妳想要寫出其中鬼的行走邏輯,你/妳會怎麼寫呢?
將「在遊戲中」、「設定」、「主頁面」想成一個大的FSM!
Common Patterns (Genres) in Game Design
Ex. 高分,殺敵,摧毀某障礙物...
玩家
改變此兩者以達到最佳的遊戲體驗!
瓶頸:有敵人與自然障礙
Game: Super Mario
瓶頸:敵人會造成傷害,可能會死掉
Game: Raze
瓶頸:通常有同樣的資源,所以必須以智取勝
Game: Warlords: Rise of Demons
瓶頸:對方想要打爆你
Game: Naruto vs Bleach (火影忍者對死神)
瓶頸:題目超難
This is not a game
瓶頸:要控制好彈藥、角度、力道
Game: Crush the Castle
瓶頸:耐心、時間有限
Game: Cookie Clickers
瓶頸:反應速度有限
Game: Lin Bing Hsuan
瓶頸:反應速度有限
Game: Beat Saber
Game: A Dark Room
得有策略性的閒置,還有RPG元素融合於其中
The best and most beautiful things in the world cannot be seen or even touched - they must be felt with the heart.
--Helen Keller
Of course, for her, nor heard.
如果這個...
Game : Moshi Monsters
當然,每個人都有自己的變化,所以只是大概講一下
相對容易,為獨自開發者(Indie Developers)所偏好,還有3D!
Game: Minecraft
相對容易,也不一定要8-bit,只要有「格子感」即屬之。
Game: The Legend of Zelda
就... 日本動漫油宅風格啊
Game: Doki Doki Literature Club
使用者體驗——讓大家都喜歡用你的程式!
Game: FireBoy & WaterGirl
Game: Pokemon
要成為區域冠軍是神奇寶貝中終極目標之一,此為迄今七個區域的冠軍。
Game: League of Legends
希望大家可以運用所學,寫出屬於自己的小遊戲!
By 林尚廷
INFOR 32nd x 33rd 放學社課 -- Python 小遊戲