查看“Joypad-Game-上一百层”的源代码
←
Joypad-Game-上一百层
跳转至:
导航
、
搜索
因为以下原因,您没有权限编辑本页:
您所请求的操作仅限于该用户组的用户使用:
用户
您可以查看与复制此页面的源代码。
{| style="width: 800px;" |- | ==概述== 我们采用Microduino-Joypad-Game来实现上一百层,并且可以通过重力感来实现控制。 ==材料清单== *Microduino设备 {|class="wikitable" |- |模块||数量||功能 |- |[[Microduino-Core/zh]]||1||核心板 |- |[[Microduino-USBTTL/zh]] ||1||下载程序 |- |[[Microduino-Joypad/zh]] ||1||控制器 |- |[[Microduino-10DOF/zh]] ||1||体感 |} [[File: Microduino-Joypad-snake.jpg|600px|center|thumb]] ==下载== TFT库:https://github.com/wasdpkj/libraries/tree/master/_01_Microduino_TFT Joypad库:https://github.com/wasdpkj/libraries/tree/master/_08_Microduino_Shield_Joypad 10DOF库:https://github.com/wasdpkj/libraries/tree/master/_05_Microduino_10DOF 代码:[https://github.com/Microduino/Microduino_Tutorials/tree/master/Microduino_Joypad/Microduino_JoyPad_Game Microduino_JoyPad_Game] ==调试== *步骤一:准备Microduino-Joypad-Game,你可以参考:[[Microduino-Joypad_Getting_start]] *步骤二:将[[Microduino-Core/zh]]、[[Microduino-10DOF/zh]]和[[Microduino-USBTTL/zh]]叠加在Microduino-Joypad-Game底板的Upin27上; *步骤三:下载使用到的库和代码,把库更新到编译器中【[[安装Arduino IDE Microduino程序库支持包]]】 *步骤四:打开示例程序 **获取重力感应,暂时只用到Y轴的数据: <source lang="cpp"> void mpu6050() { accelgyro.getMotion6(&ax,&ay,&az,&gx,&gy,&gz);//获取三个轴的加速度和角速度 //======一下三行是对加速度进行量化,得出单位为g的加速度值 Ax=ax/16384.00; Ay=ay/16384.00; Az=az/16384.00; //==========以下三行是用加速度计算三个轴和水平面坐标系之间的夹角 // Angel_accX=atan(Ax/sqrt(Az*Az+Ay*Ay))*180/3.14; Angel_accY=atan(Ay/sqrt(Ax*Ax+Az*Az))*180/3.14; //Angel_accZ=atan(Az/sqrt(Ax*Ax+Ay*Ay))*180/3.14; } </source> **摇杆与按键控制切换代码: <source lang="cpp"> int acc_readX() { if(Joypad.readButton(CH_SWITCH_L)&&Joypad.readButton(CH_SWITCH_R)) { mpu6050(); val= constrain(Angel_accY, -64, 64); // use Y for orientation } else val= -1 * constrain(Joypad.readJoystickX()/8, -64, 64); // use Y for orientation return(val); // Serial.println(val); } </source> 默认是左右边两边的拨动开关拨到上面是重力感应控制,否则摇杆控制,玩家可以更改切换选择方式。 *最高分数EEPROM保存: <source lang="cpp"> if(score > highscore){ if(score < 64000) { EEPROM.write(0, score); EEPROM.write(1, score>>8); } else { // bad value, zero out EEPROM.write(0,0); EEPROM.write(1,0); } //drawString(1, s_height+3, "HIGHSCORE!", p_color_default, 1); // tft.drawString(1, s_height+3, "HIGHSCORE!", p_color_default, 1); drawInt(score, 120, s_height+3, p_color_default, background); highscore = score; } </source> *四种跳跃方式: <source lang="cpp"> switch (b_onUseID){ case 0: drawString(1, s_height+3, "Jet pack", b_colors[b_onUseID], 1); // tft.drawString(1, s_height+3, "Jet pack", b_colors[b_onUseID], 1); b_max = 100; b_remaining = b_max; break; case 1: drawString(1, s_height+3, "Frog legs", b_colors[b_onUseID], 1); // tft.drawString(1, s_height+3, "Frog legs", b_colors[b_onUseID], 1); b_max = 100; b_remaining = b_max; break; case 2: drawString(1, s_height+3, "Testosterone", b_colors[b_onUseID], 1); // tft.drawString(1, s_height+3, "Testosterone", b_colors[b_onUseID], 1); b_max = 1; b_remaining = b_max; break; case 3: drawString(1, s_height+3, "Low gravity", b_colors[b_onUseID], 1); // tft.drawString(1, s_height+3, "Low gravity", b_colors[b_onUseID], 1); b_max = 255; b_remaining = b_max; break; } </source> 步骤五:编译代码,成功后选择对应的板卡和COM端口下载。下载完毕后就可以进行体验了。 *体验: **先确认两个波动开关两个状态,如果全打开(拨到上)则用重力感应控制,否则用左边摇杆控制。 **途中落在不同层上面可以更改跳跃方式 **当小球落地后就“GAME OVER”,如果分数大于以前的,则将写入EEPROM。 |}
返回至
Joypad-Game-上一百层
。
导航菜单
个人工具
创建账户
登录
名字空间
页面
讨论
变种
视图
阅读
查看源代码
查看历史
更多
搜索
Welcome
首页
创客大赛
大赛详情
3D打印
安装月球车
图形化编程
操控月球车
升级月球车
编程工具下载
软件下载
Arduino
Processing
Mixly
Scratch
模块套件
Microduino 102
mCookie 102
mCookie 202
mCookie 302
IBC
其他
应用套件
四轴飞行器
平衡车
小车CUBE
音乐播放器
刷卡音乐播放器
wifi气象站
彩虹音乐触摸灯
分贝检测仪
迎门汇报
LED点阵时钟
LED点阵屏幕
硬件
mCookie
Sensor
Microduino
MicroWrt
MicroNux
MicroRobot-Core
MicroRobot-CoreESP
ideaBoard
ideaBox
MicroMV
MicroAI
帮助
常见问题
帮助
工具
链入页面
相关更改
特殊页面
页面信息