驴友花雕
发表于 2020-6-28 13:56:11
驴友花雕
发表于 2020-6-28 14:16:29
15、滚雪球(大于)
#MicroPython动手做(35)——小游戏
#滚雪球
from mpython import *
import time
import random
import math
def on_button_a_down(_):
global i, x, y, r, yn, xn, my_listy, my_listx, j
time.sleep_ms(10)
if button_a.value() == 1: return
x = 4
y = 32
xn = 0
yn = 0
r = 4
i = 0
j = 10
my_listx = []
my_listy = []
for count in range(10):
my_listx.append((random.randint(20, 120)))
my_listy.append((random.randint(1, 60)))
oled.fill(0)
for count in range(10):
oled.pixel(my_listx, my_listy, 1)
xn = xn + 1
yn = yn + 1
oled.show()
while True:
oled.fill_circle(x, y, r, 1)
oled.DispChar((str(int(r))), 0, 0, 1)
oled.show()
if get_tilt_angle('Y') < -15:
x = x + 1
if get_tilt_angle('X') < -10:
y = y + -1
if get_tilt_angle('X') > 10:
y = y + 1
if x > 130:
break
i = 0
my_func()
def my_func():
global i, x, y, r, yn, xn, my_listy, my_listx, j
for count in range(int(j)):
if math.sqrt((x - my_listx) ** 2 + (y - my_listy) ** 2) <= r:
r = r + 2
my_listx = (-1)
my_listy = (-1)
i = i + 1
random.seed(time.ticks_cpu())
def get_tilt_angle(_axis):
_Ax = accelerometer.get_x()
_Ay = accelerometer.get_y()
_Az = accelerometer.get_z()
if 'X' == _axis:
_T = math.sqrt(_Ay ** 2 + _Az ** 2)
if _Az < 0: return math.degrees(math.atan2(_Ax , _T))
else: return 180 - math.degrees(math.atan2(_Ax , _T))
elif 'Y' == _axis:
_T = math.sqrt(_Ax ** 2 + _Az ** 2)
if _Az < 0: return math.degrees(math.atan2(_Ay , _T))
else: return 180 - math.degrees(math.atan2(_Ay , _T))
elif 'Z' == _axis:
_T = math.sqrt(_Ax ** 2 + _Ay ** 2)
if (_Ax + _Ay) < 0: return 180 - math.degrees(math.atan2(_T , _Az))
else: return math.degrees(math.atan2(_T , _Az)) - 180
return 0
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
驴友花雕
发表于 2020-6-28 14:34:57
驴友花雕
发表于 2020-6-28 14:40:57
mPython X 实验图形编程
驴友花雕
发表于 2020-6-28 14:52:58
mPython X 实验图形编程
驴友花雕
发表于 2020-7-6 16:28:24
17、石头剪刀布(阿勇)
#MicroPython动手做(35)——小游戏
#石头剪刀布
from mpython import *
import time
import random
from machine import Timer
def on_button_a_down(_):
global y, x, k, j
time.sleep_ms(10)
if button_a.value() == 1: return
x = random.randint(1, 3)
xianshi(x, 10)
def on_button_b_down(_):
global y, x, k, j
time.sleep_ms(10)
if button_b.value() == 1: return
y = random.randint(1, 3)
xianshi(y, 90)
_status_p = _status_y = _status_t = _status_h = _status_o = _status_n = 0
def on_touchpad_P_pressed():pass
def on_touchpad_P_unpressed():pass
def on_touchpad_Y_pressed():pass
def on_touchpad_Y_unpressed():pass
def on_touchpad_T_pressed():pass
def on_touchpad_T_unpressed():pass
def on_touchpad_H_pressed():pass
def on_touchpad_H_unpressed():pass
def on_touchpad_O_pressed():pass
def on_touchpad_O_unpressed():pass
def on_touchpad_N_pressed():pass
def on_touchpad_N_unpressed():pass
tim12 = Timer(12)
def timer12_tick(_):
global _status_p, _status_y, _status_t, _status_h, _status_o, _status_n
try:
touchPad_P.read();pass
except:
return
if touchPad_P.read() < 400:
if 1 != _status_p:_status_p = 1;on_touchpad_P_pressed()
elif 0 != _status_p:_status_p = 0;on_touchpad_P_unpressed()
if touchPad_Y.read() < 400:
if 1 != _status_y:_status_y = 1;on_touchpad_Y_pressed()
elif 0 != _status_y:_status_y = 0;on_touchpad_Y_unpressed()
if touchPad_T.read() < 400:
if 1 != _status_t:_status_t = 1;on_touchpad_T_pressed()
elif 0 != _status_t:_status_t = 0;on_touchpad_T_unpressed()
if touchPad_H.read() < 400:
if 1 != _status_h:_status_h = 1;on_touchpad_H_pressed()
elif 0 != _status_h:_status_h = 0;on_touchpad_H_unpressed()
if touchPad_O.read() < 400:
if 1 != _status_o:_status_o = 1;on_touchpad_O_pressed()
elif 0 != _status_o:_status_o = 0;on_touchpad_O_unpressed()
if touchPad_N.read() < 400:
if 1 != _status_n:_status_n = 1;on_touchpad_N_pressed()
elif 0 != _status_n:_status_n = 0;on_touchpad_N_unpressed()
tim12.init(period=100, mode=Timer.PERIODIC, callback=timer12_tick)
def on_touchpad_P_pressed():
global y, x, k, j
x = 0
y = 0
oled.fill(0)
oled.DispChar("玩家1按A键玩家2按B键", 0, 0, 1)
oled.show()
def xianshi(j, k):
global y, x
if j == 1:
oled.blit(image_picture.load('face/rock_s.pbm', 0), k, 17)
if j == 2:
oled.blit(image_picture.load('face/scissors_s.pbm', 0), k, 17)
if j == 3:
oled.blit(image_picture.load('face/paper_s.pbm', 0), k, 17)
oled.show()
def panduan():
global y, x, k, j
if x == y:
oled.DispChar(" 打平", 50, 50, 1)
else:
if x - y == -1 or x - y == 2:
oled.DispChar("玩家1赢", 50, 50, 1)
else:
oled.DispChar("玩家2赢", 50, 50, 1)
oled.show()
random.seed(time.ticks_cpu())
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)
image_picture = Image()
oled.fill(0)
oled.DispChar(" 石头剪刀布小游戏", 0, 0, 1)
oled.DispChar("玩家1按A键玩家2按B键", 0, 16, 1)
oled.DispChar(" 系统自动判断谁输谁赢", 0, 32, 1)
oled.DispChar(" 按P键开始玩", 0, 48, 1)
oled.show()
x = 0
y = 0
while True:
if x != 0 and y != 0:
panduan()
驴友花雕
发表于 2020-7-6 16:42:33
驴友花雕
发表于 2020-7-6 16:47:25
mPython X 实验图形编程1
驴友花雕
发表于 2020-7-6 17:23:47
mPython X 实验图形编程2