電子18啦

編輯歷史

時間 作者 版本
2017-07-19 13:37 – 13:37 (unknown) r0 – r1
顯示 diff
+ 電子18啦
+
+ 規則說明:
+
+ 現在常見"4"顆骰子18啦的玩法
+ 在遊戲開始前必須決定要比大或比小
+ 由四個骰子來擲,其中兩個相同點的就為一對,不算點,另外兩個不同點的加起來的點數來比大小
+ 4顆骰子都一模一樣時為最大(若為莊家其他玩家皆不須再甩骰子,本局由莊家勝出)
+ 十八(12點):2顆骰子為一樣的其餘2顆各都為6
+ 逼基(3點)2顆骰子為一樣的其餘兩顆骰子分別為1和2
+ 無面(0點)也就是不算,3個相同的或4個都不一樣
+ 若達到五次都為無面(0點)則當局獲勝or持續丟到有點數為止(民間習俗與玩法各有不同)
+
+ 資料來源: 網路,自己
+
+ 這是七段顯示器的腳位圖
+ *
+
+ 這個是樹莓派與麵包板的接線圖
+
+ *
+
+
+
+ 為了讓麵包板的七段顯示器能夠不受排線的影響正常顯示,所以在電路的接法上比較複雜,並且在電路板上加裝按鈕做更多變化
+
+ 以下為程式碼重點:
+
+ *import random #匯入亂數模組 #import standard library random
+ *
+ *def a(): #建立一個新函數名為a()
+ * return random.choice(['1','2','3','4','5','6'])
+ *
+ *word = [a(),a(),a(),a()] #隨機得到四個數字做後面的迴圈
+ *
+ *while True: #一個無限迴圈
+ * for n in range(4)
+ * for digit in digits: #讓所有燈變成暗的
+ * GPIO.output(digit, 1)
+ * GPIO.output(digits[n], 0) #亮位置n的燈組,因為現在只有range(4)所以不用%4
+ * i = 0
+ * for on_or_off in dictionary[word[n]]: #索引字典位置n的字,用for迴圈亮該亮的燈管
+ * GPIO.output[segments[i],on_or_off)
+ * i += 1
+ * time.sleep(0.001) #每個七段顯示器亮0.001秒
+ * if GPIO.input(2) == True #按鈕開關的感測
+ * word = [a(),a(),a(),a()] #如果上面的if是True就會找一個新的字串
+
+
+
+ 製作:11820 , 11824 , 11825
+ *import RPi.GPIO as GPIO
+ *import time
+ *import random
+ *
+ *GPIO.setmode(GPIO.BCM)
+ *GPIO.setwarnings(False)
+ *GPIO.setup(2, GPIO.IN)
+ *
+ *def a():
+ * return random.choice(['1','2','3','4','5','6'])
+ *
+ *
+ *
+ *
+ *segments = (5, 9, 17, 13, 19, 11, 4, 6)
+ *for segment in segments:
+ * GPIO.setup(segment, GPIO.OUT)
+ * GPIO.output(segment, 0)
+ *digits = (26, 10, 27, 22)
+ *for digit in digits:
+ * GPIO.setup(digit, GPIO.OUT)
+ * GPIO.output(digit, 1)
+ *dictionary = {' ':(0,0,0,0,0,0,0),
+ * '0':(1,1,1,1,1,1,0),
+ * '1':(0,1,1,0,0,0,0),
+ * '2':(1,1,0,1,1,0,1),
+ * '3':(1,1,1,1,0,0,1),
+ * '4':(0,1,1,0,0,1,1),
+ * '5':(1,0,1,1,0,1,1),
+ * '6':(1,0,1,1,1,1,1),}
+ *
+ *
+ *
+ *word=[a(),a(),a(),a()]
+ *
+ *
+ *
+ *while True:
+ * for n in range(4):
+ * for digit in digits: # all digits off
+ * GPIO.output(digit, 1)
+ * GPIO.output(digits[n], 0)
+ * i = 0
+ * for on_or_off in dictionary[word[n]]:
+ * GPIO.output(segments[i], on_or_off)
+ * i += 1
+ * time.sleep(0.001)
+ * if GPIO.input(2) == True:
+ * word=[a(),a(),a(),a()]
+ *
+ *GPIO.cleanup()