步骤1
六一儿童节期间想和孩子一起做一个和生活贴近的小游戏,便想到了自编朵拉整理房间的小故事贴合主题。因为我和孩子都是新手,真是费了不少的功夫。改了好多次才是现在这样。中间还请教了老师。像全屏模式要加可拖动积木,还有上传是碰到字体被叠加的问题。非常感激老师的指导。希望老师们多多指点。指出不足。
步骤2
朵拉是一个非常可爱的小女孩。他有一个坏习惯就是喜欢乱扔垃圾,所以她的房间总是又脏又乱,这让妈妈整理起来总是很头疼。
一天,妈妈走进朵拉的房间。果然,眼前又是一片狼籍。她对朵拉说:“朵拉,我们来做个游戏吧!你把房间整理的像我之前帮你整理的一样,我来给你打分,如果你得了100分,能得到一份神秘礼物哦!”于是,朵拉认认真真地把他的房间整理好了,便得到了妈妈送的礼物。
游戏的规则是将房间内的物品一样一样的用鼠标拖动至相应的位置附近,用鼠标左键再次点击角色来判断放置位置是否正确。如果拖动到的位置是正确的,角色就会被放置到规定的位置,并调整好大小,计分器会加上相应的分数。如果拖到的位置是错误的,角色就会在0.5秒内返回原处,计分器不加分。当计分器显示为100分时,说明房间已按要求整理完毕。妈妈会说:“我们来看看礼物吧!”这个小游戏就结束了。
我们先到网上收集并上传添加入人物角色及背景的图片。然后编辑每个角色的脚本。我们把角色有人物,垃圾,文具,玩具还有相框枕头及按钮。同类部分的脚本除了位置不同,其他都是相似的。
礼物是一盏智能小台灯。天气渐渐转热,这是一台带摇头风扇的LED台灯,可以在学习时带给朵拉一阵清凉。当测距仪检测距离小于30厘米的时候,LED灯,会自动亮起,风扇摇头吹风。测距仪测得距离大于30厘米的时候,停止全部,表示人已离开。台灯后面还有一个手控开关。开关关掉以后,舵机和风扇不再听取测距仪读得的数据,一直处于停止状态,只有LED灯一直听从测距仪测得的数据实现灯的亮灭。这个模式适合天气不热的时候使用这盏台灯。智能台灯解决了孩子总是忘记开关灯的烦恼。
材料清单
- arduino板 X1
- 舵机 X1
- 测距仪 X1
- 电机风扇 X1
- 开关 X1
- LED灯 X1
- 塑料快餐盒 X1
- 吸管 X1
- 铁丝 X1
- 杜邦线 X10
- 装饰花及人偶 X1
#include <Servo.h>
int _ABVAR_1_jvli = 0 ;
int _ABVAR_2_jiaodu = 0 ;
int ardublockUltrasonicSensorCodeAutoGeneratedReturnCM(int trigPin, int echoPin)
{
long duration;
pinMode(trigPin, OUTPUT);
pinMode(echoPin, INPUT);
digitalWrite(trigPin, LOW);
delayMicroseconds(2);
digitalWrite(trigPin, HIGH);
delayMicroseconds(20);
digitalWrite(trigPin, LOW);
duration = pulseIn(echoPin, HIGH);
duration = duration / 59;
return duration;
}
Servo servo_pin_9;
int _ABVAR_3_50 = 0 ;
void setup()
{
pinMode( 5 , OUTPUT);
digitalWrite( 2 , LOW );
servo_pin_9.attach(9,530,2600);
pinMode( 8 , OUTPUT);
_ABVAR_1_jvli = 0 ;
_ABVAR_2_jiaodu = 0 ;
}
void loop()
{
_ABVAR_1_jvli = ardublockUltrasonicSensorCodeAutoGeneratedReturnCM( 2 , 3 ) ;
servo_pin_9.write( _ABVAR_2_jiaodu );
if (( ( _ABVAR_1_jvli ) > ( 30 ) ))
{
digitalWrite( 8 , LOW );
analogWrite(5 , 0);
servo_pin_9.write( _ABVAR_3_50 );
}
else
{
digitalWrite( 8 , HIGH );
analogWrite(5 , 255);
for(_ABVAR_2_jiaodu = 30;
30<=120?_ABVAR_2_jiaodu <= 120:_ABVAR_2_jiaodu >= 120;
30<=120?_ABVAR_2_jiaodu = _ABVAR_2_jiaodu + 1:_ABVAR_2_jiaodu = _ABVAR_2_jiaodu - 1)
{
servo_pin_9.write( _ABVAR_2_jiaodu );
delay( 30 );
}
for(_ABVAR_2_jiaodu = 120;
120<=30?_ABVAR_2_jiaodu <= 30:_ABVAR_2_jiaodu >= 30;
120<=30?_ABVAR_2_jiaodu = _ABVAR_2_jiaodu + 1:_ABVAR_2_jiaodu = _ABVAR_2_jiaodu - 1)
{
servo_pin_9.write( _ABVAR_2_jiaodu );
delay( 30 );
}
}
}
附件
评论