【雕爷学编程】 MicroPython动手做(35)——体验小游戏5

知识点:什么是掌控板?
掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED显示屏、RGB灯、加速度计、麦克风、光线传感器、蜂鸣器、按键开关、触摸开关、金手指外部拓展接口,支持图形化及MicroPython代码编程,可实现智能机器人、创客智造作品等智能控制类应用。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

掌控板硬件特性:
ESP-32主控
处理器:Tensilica LX6双核处理器(一核处理高速连接;一核独立应用开发)
主频:高达240MHz的时钟频率
SRAM:520KB
Flash:8MB
Wi-Fi标准:FCC/CE/TELEC/KCC
Wi-Fi协议:802.11 b/g/n/d/e/i/k/r (802.11n,速度高达150 Mbps),A-MPDU和A-MSDU聚合,支持0.4us防护间隔
频率范围:2.4~2.5 GHz
蓝牙协议:符合蓝牙v4.2 BR/EDR和BLE标准
蓝牙音频:CVSD和SBC音频低功耗:10uA
供电方式:Micro USB供电
工作电压:3.3V
最大工作电流:200mA
最大负载电流:1000mA
掌控板载
三轴加速度计MSA300,测量范围:±2/4/8/16G
地磁传感器MMC5983MA,测量范围:±8 Gauss;精度0.4mGz,电子罗盘误差±0.5°
光线传感器
麦克风
3 颗全彩ws2812灯珠
1.3英寸OLED显示屏,支持16*16字符显示,分辨率128x64
无源蜂鸣器
支持2个物理按键(A/B)、6个触摸按键
支持1路鳄鱼夹接口,可方便接入各种阻性传感器
拓展接口
20通道数字I/O, (其中支持12路PWM,6路触摸输入)
5通道12bit模拟输入ADC,P0~P4
1路的外部输入鳄鱼夹接口:EXT/GND
支持I2C、UART、SPI通讯协议

在这里插入图片描述
在这里插入图片描述

小游戏 (体积较小、玩法简单的游戏)
小游戏是一个较模糊的概念,它是相对于体积庞大的单机游戏及网络游戏而言的,泛指所有体积较小、玩法简单的游戏,通常这类游戏以休闲益智类为主,有单机版有网页版,在网页上嵌入的多为FLASH格式。当下小游戏主要是指在线玩的flash版本游戏,统称小游戏,其实小游戏还包含单机游戏,小型游戏机等。一般游戏大小小于10m的游戏都统称为小游戏,一些街机类小游戏。因其游戏安装简便,耐玩性强,无依赖性而广受白领及小朋友的喜爱。

“小游戏”这个词的型含义其实很简单,它不是一些大的游戏,不必花费更多的时间和精力。小游戏是原始的游戏娱乐方式,小游戏本身是为了叫人们在工作,学习后的一种娱乐、休闲的一种方式,不是为了叫玩家为之花费金钱、花费精力,更不是叫玩家为他痴迷。小游戏也可以理解为“Flash游戏”,是以SWF为后缀的游戏的总称.这些游戏是通过Flash软件和 Flash 编程语言 Flash ActionScript 制作而成。由于Flash是矢量软件,所以小游戏放大后几乎不影响画面效果。Flash小游戏是一种新兴起的游戏形式,以游戏简单,操作方便,绿色,无需安装,文件体积小等优点渐渐被广大网友喜爱。

在这里插入图片描述

6、记忆力大比拼(shworld)
产生8位随机键序→累加用户的输入键序→判断键序

#MicroPython动手做(35)——小游戏
#记忆力大比拼

from mpython import *
import time
import random
isStart=False    #是否首次载入,不然游戏中按A键又初始化了
inputKey=''      #键序,统计用户输入的键序,如11112222
inputKey_STR=''  #同键序,文本型,只不过用来显示,当前"当前您已输入AAABBBB"
keyOrder=''      #获取到的8位随机键序,如11112222

#获取随机8位键序
def makeKeyOrder():
    keys=''
    for i in range(8):  #循环8次
        key = random.randrange(1, 3)#获取范围1到2, 1为A键,2位B键
        keys = keys + str(key)
    return keys
keyOrder = makeKeyOrder() #返回获取到的8位键序,如11112222


#覆写oledshow,主要减少重复代码量
def oledshow(str,y=0,isClear=True):
    if isClear==False:
        oled.DispChar(str, 0,y)
        oled.show()
        return
    oled.fill(0)
    oled.DispChar(str, 0,y)
    oled.show()


#倒计时显示3-2-1
def countdownshow():
    j=4
    for i in range(3):
        j = j-1
        oledshow('倒计时:%s'%str(j),0)
        time.sleep(1)
 
        
#每次用户按键后触发该方法
def checkKey():
    global keyOrder,inputKey,inputKey_STR #引用全局变量,如果不修改变量,不需要申明global
    if len(inputKey)==8:                  #如果当前按键数等于8位才开始进行对比
        if inputKey==keyOrder:            #如果输入的8位键序和生成的8位键序匹配
            oledshow('恭喜您,按对了!...',0)#按键正确,输出内容
        else:
            oledshow('别灰心,再接再厉!...',0)#否则按键失败,输出内容
            
        #重新开始下一轮
        time.sleep(2)   #暂停2秒,避免内容切换过快看不到
        inputKey=''     #清空用户输入的键值,如11112222
        inputKey_STR='' #清空用户输入的键值,文本型,如AAAABBBB
        oledshow('下一题开始:',0)
        time.sleep(2)
        keyOrder = makeKeyOrder() #重新获取8位键序,11112222
        countdownshow()           #倒计时显示3-2-1
        showKey()                 #显示要记忆的键序
        
    
#显示键序
#主要是把数字11112222,转换成对应的AAAABBBB,很好理解,多看看
def showKey():
    global keyOrder  #引用全局变量
    key_str=''   #局部变量
    for key in keyOrder:
        if key=='1':
            key_str=key_str+"A"
        if key=='2':
            key_str=key_str+"B"
    oledshow(key_str,0)
    time.sleep(1)
    oledshow('',0)

        
#按键A触发事件
def on_button_a_down(_):
    time.sleep_ms(100)   #延迟调高点,避免产生2次按键事件
    global isStart,inputKey,inputKey_STR #引用全局变量

    if button_a.value() == 1: return
    if isStart == True:
        inputKey=inputKey+'1'           #统计用户键序
        inputKey_STR=inputKey_STR+'A'   #统计用户键序,文本型,用来显示当前的输入
        oledshow('您输入的是:'+inputKey_STR,0) #显示当前的输入
        checkKey()                      #输入的键序进行校验匹配
        return
    isStart=True
    oledshow('游戏现在开始...',0)
    time.sleep(1)
    countdownshow()
    showKey()
     
#按键B触发事件
def on_button_b_down(_):
    time.sleep_ms(100)  #延迟调高点,避免产生2次按键事件
    global inputKey,inputKey_STR
    if button_b.value() == 1: return
    if isStart == True:
        inputKey=inputKey+'2'            #统计用户键序
        inputKey_STR=inputKey_STR+'B'    #统计用户键序,文本型,用来显示当前的输入
        oledshow('您输入的是:'+inputKey_STR,0) #显示当前的输入
        checkKey()                       #输入的键序进行校验匹配
        return
    
#按键触发监视
button_a.irq(trigger=Pin.IRQ_FALLING, handler=on_button_a_down)
button_b.irq(trigger=Pin.IRQ_FALLING, handler=on_button_b_down)

#游戏启动
oledshow('【记忆力大比拼】',0,False)
oledshow('记忆屏幕出现的键序',16,False)
oledshow('如ABABAA,请依次键入',32,False)
oledshow('按A键自动开始游戏',48,False)

记忆力大比拼

在这里插入图片描述
在这里插入图片描述

7、吃鸡游戏

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

#MicroPython动手做(35)——小游戏
#吃鸡游戏

from mpython import *
import time
import random
import music

def zhunxing():
    global grade, zidan, foodstate, yy, diY, xx, diX
    oled.hline((xx - 10), yy, 20, 1)
    oled.vline(xx, (yy - 10), 20, 1)
    oled.circle(xx, yy, 6, 1)

random.seed(time.ticks_cpu())


oled.fill(0)
oled.DispChar("今晚吃鸡?", 32, 26, 1)
oled.show()
time.sleep(3)
xx = 64
yy = 32
foodstate = True
grade = 0
zidan = 10
while True:
    if foodstate:
        diX = random.randint(4, 120)
        diY = random.randint(4, 60)
        foodstate = False
    xx = int(numberMap(accelerometer.get_y(),(-0.5),0.5,2,125))
    yy = int(numberMap(accelerometer.get_x(),0.5,(-0.5),2,61))
    if xx >= 2 and xx <= 125 and yy >= 2 and yy <= 61:
        oled.fill(0)
        oled.fill_circle(diX, diY, 4, 1)
        zhunxing()
        oled.show()
    if button_a.value() == 0 or button_b.value() == 0:
        rgb.fill((int(255), int(0), int(0)))
        rgb.write()
        time.sleep_ms(1)
        music.play('C3:1')
        zidan = zidan + -1
        if diX >= xx - 2 and diX <= xx + 2 and diY >= yy - 2 and diY <= yy + 2:
            foodstate = True
            grade = grade + 1
            if zidan <= 0:
                oled.fill(0)
                oled.DispChar("             游戏结束", 0, 16, 1)
                oled.DispChar(str("              得分:") + str(grade), 0, 32, 1)
                oled.show()
                break
        time.sleep_ms(100)
        rgb.fill( (0, 0, 0) )
        rgb.write()
        time.sleep_ms(1)

mPython X 实验图形编程
在这里插入图片描述

mPython X 实验图形编程2

在这里插入图片描述

吃鸡游戏

在这里插入图片描述
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

驴友花雕

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值