1. Java编程,活动物体遇到障碍如何正确识别绕过
简单,
1,运动物体两个属性(x,y) 标定当前位置
2,障碍物对象(x1,y1) 是一个常量,标志它的位置
3,利用多线程编程,主线程运行物体,辅助线程进行判断
if(x=x1 且 y =y1),表示碰到障碍物了
4,剩下的就是决定你的下一步路径怎么走了,
无非是定义 一个路径函数f(),if-else的进行判断,
比如当碰到障碍物时,if(x==x1&&y==y1){x = f(x);y=f(y)}
自己决定,短小精悍
---
请问你补充的那个有什么用呢?
如果你要想绕过电线杆,还不是要先知道电线杆在哪?
..
然后再决定怎么绕,不就是x+ y+么?再不懂我无语了
2. 儿童如何学编程
儿童学编程的几个阶段如下:
第一阶段:模块化编程
学习编程需要有一定的背粗宏唯景知识,不能一上来就开始学复杂的C语言,孩子就像听天书一样,没有任何兴趣,完全浪费时间。
孩子可以从一些简单的编程学起,由易到难一点点进步。打好基础之后,再学复杂内容就能够轻松理解,一点点进步。
如果从小学低年级开始学编程,可以先学习以乐高EV3机器人等实体为依托的编程。以积木为载体,编程模块化,既符合孩子的兴趣,又很容易上手,孩子有动力继岩培续学习。
编程形式看上去很简单,但也使用各种数学计算、物理模型实现自己的目标。比如计算速度
计算角度、计算宽度等等。孩子有了基本的编程思路之后,就为以后复杂的编程学习打好基础。
第二阶段:C++语言编程
孩子到了小学高年级,一般是5年级,已经积累了一定的数学、科学知识,思维能力也增强了,就可以尝试学习C++语言。
反过来说,要想学编程,孩子要先学好数学,所以,在平时要多关注孩子的数学成绩,除了绝睁课本知识外,还要进行一些拓展学习,让孩子的思路更开阔一些。
学习编程比较枯燥,不能只听老师灌输,要积极思考,提出自己的疑问。哪怕是问的问题很幼稚,也要不停追问。在不断求解中,才能真正学懂编程,为以后应用打好基础。
第三阶段:编程相关竞赛
学习C++语言之后,可以参加信息学竞赛练练手,看看学习效果如何。有很多孩子从小学5年级就开始参加竞赛,成绩还是很不错的,既锻炼了能力又增强了信心。
如果竞赛成绩很好,可以坚持参加竞赛,如果取得比较好的成绩,对升学有帮助。比如可以以科技特长生身份进入重点高中,可以通过综合评价、强基计划、保送等形式进入很好的大学。
3. 编程猫怎么设置随机出现障碍物
编程猫置随机出现障碍物方法如下:
1、运行编程猫APP,新建作品,进入创作界面。
2、设置背景。添加障碍物。
3、切换到积木编辑界面,添加如下代码。其中红色积木"设置x为..."和"设置y为..."是设置障碍物出现的位置。“-200到200间的随机数"和"-300到300间的随机数",则是让障碍物在随机位置出现。
4. c语言游戏编程,下落的小鸟 求代码
下落的小鸟
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<time.h>
#include<Windows.h>
int Grade = 1, Score = 0, Max_blank = 9, Distance = 18;
struct Birds{int x; int y;}; //定义一种Birds数据类型(含3个成员)
Birds *Bird = (Birds*)malloc(sizeof(Birds)); //定义Birds类型 指针变量Bird并赋初值
struct Bg{int x, y; int l_blank; Bg *pri; Bg *next;}; //定义一种Bg数据类型(含5个成员)
Bg *Bg1 = (Bg*)malloc(sizeof(Bg)); //定义Bg类型 指针变量Bg1并赋初值
void Position(int x, int y) //光标定位函数(用于指定位置输出)
{COORD pos = { x - 1, y - 1 };
HANDLE Out = GetStdHandle(STD_OUTPUT_HANDLE);
SetConsoleCursorPosition(Out, pos);
}
void Csh( ) //初始化界面
{
printf("══════════════════════════════════════ ");
printf(" ■■ ■■ C语言版 Flappy Bird ");
printf(" ■■ ■■ ");
printf(" ■■ ■■ ");
printf(" ■■ ■■ 瞎搞人:yyposs原创 ");
printf(" ■■ ■■ 瞎搞日期:2014.2 ");
printf(" ■■ ■■ ");
printf(" ■■ ■■ 改编:鸣蝉百2021.7 ");
printf(" ■■ ■■ 操作:按向上方向键让小鸟起飞 ");
printf(" ■■ ");
printf(" ■■ ");
printf(" ■■ ■■ ");
printf(" ■■ ■■ ");
printf(" ■■ ■■ ");
printf(" ■■ ■■ ");
printf(" ■■ ■■ DEVc++运行通过 ");
printf("══════════════════════════════════════ ");
printf(" 按键继续…");
getch( );
system("cls");
}
void PrFK( ) //输出方框(游戏范围区)
{int i;
Position(1, 1); printf("╔"); Position(79, 1); printf("╗");
Position(1, 24); printf("╚"); Position(79, 24); printf("╝");
for (i = 3; i <= 78; i += 2){Position(i, 1); printf("═"); Position(i, 24); printf("═");}
for(i=2;i<=23;i++)
{ Position(1,i); printf("║");if(i<11)printf("0%d",i-1);else printf("%d",i-1);
Position(79,i); printf("║");
}
Position(4, 25); printf("小鸟即将出现,请准备按键起飞… ");
getch( );
Position(4, 25); printf(" ");
}
void CreatBg( ) //创建障碍物坐标(便于打印输出)
{Bg *Bg2 = (Bg*)malloc(sizeof(Bg));
Bg1->x = 90; Bg1->y = 8; //确定障碍物的一对基本坐标(此时值是在游戏框之外)
Bg2->x = Bg1->x + Distance; Bg2->y = 9; //下一障碍物的基本坐标x、y
Bg1->l_blank = Max_blank - Grade; //障碍物上下两部分之间的空白距离l_blank
Bg2->l_blank = Max_blank - Grade;
Bg1->next = Bg2; Bg1->pri = Bg2;
Bg2->next = Bg1; Bg2->pri = Bg1;
}
void InsertBg(Bg *p) //随机改变障碍物的y坐标,让空白通道有上下变化
{int temp;
Bg *Bgs = (Bg*)malloc(sizeof(Bg));
Bgs->x = p->pri->x + Distance;
Bgs->l_blank = Max_blank - Grade;
srand((int)time(0)); //启动随机数发生器
temp = rand( ); //产生一个随机数并赋值给temp
if (temp % 2 == 0)
{if ((temp % 4 + p->pri->y + Max_blank - Grade)<21)
Bgs->y = p->pri->y + temp % 4;
else Bgs->y = p->pri->y;
}
else
{if ((p->pri->y - temp % 4)>2)Bgs->y = p->pri->y - temp % 4;
else Bgs->y = p->pri->y;
}
Bgs->pri = p->pri; Bgs->next = p;
p->pri->next = Bgs; p->pri = Bgs;
}
void CreatBird( ) //建立小鸟的坐标(初始打印输出小鸟的位置)
{Bird->x = 41; Bird->y = 10;}
int CheckYN(Bg *q) //判断游戏结束与否(值为0是要结束,为1没有要结束)
{Bg *p = q; int i = 0;
while (++i <= 5)
{if (Bird->y>23)return 0;
if (Bird->x == p->x&&Bird->y <= p->y)return 0;
if ((Bird->x == p->x || Bird->x == p->x + 1 || Bird->x == p->x + 2) && Bird->y == p->y)return 0;
if (Bird->x == p->x&&Bird->y>p->y + p->l_blank)return 0;
if ((Bird->x == p->x || Bird->x == p->x + 1 || Bird->x == p->x + 2) && Bird->y == p->y + p->l_blank)
return 0;
p = p->next;
}
return 1;
}
void Check_Bg(Bg *q) //核查开头的障碍物坐标是否在游戏区内
{Bg *p = q; int i = 0, temp;
while (++i <= 5)
{if (p->x>-4)p = p->next;
else
{srand((int)time(0)); temp = rand();
if (temp % 2 == 0)
{if ((temp % 4 + p->y + Max_blank - Grade)<21)p->y = p->y + temp % 4;
else p->y = p->y; p->x = p->pri->x + Distance;
p->l_blank = Max_blank - Grade;
}
else
{if ((p->y - temp % 4)>2)p->y = p->y - temp % 4;
else p->y = p->y; p->x = p->pri->x + Distance;
p->l_blank = Max_blank - Grade;
}
}
}
}
void Prt_Bg(Bg *q) //打印输出障碍物(依据其x、y坐标进行相应输出)
{Bg *p = q; int i = 0, k, j;
while (++i <= 5)
{if (p->x>0 && p->x <= 78)
{for (k = 2; k<p->y; k++){Position(p->x + 1, k); printf("■"); printf("■"); printf(" ");}
Position(p->x, p->y);
printf("■"); printf("■"); printf("■"); printf(" ");
Position(p->x, p->y + p->l_blank);
printf("■"); printf("■"); printf("■"); printf(" ");
k = k + p->l_blank + 1;
for (k; k <= 23; k++){Position(p->x + 1, k); printf("■"); printf("■"); printf(" ");}
}
p = p->next;
if (p->x == 0)
{for (j = 2; j<p->y; j++){Position(p->x + 1, j); printf(" "); printf(" ");}
Position(p->x + 1, p->y);
printf(" "); printf(" "); printf(" ");
Position(p->x + 1, p->y + Max_blank - Grade);
printf(" "); printf(" "); printf(" ");
j = j + Max_blank - Grade + 1;
for (j; j <= 22; j++){Position(p->x + 1, j); printf(" "); printf(" ");}
}
}
}
void PrtBird( ) //打印输出小鸟
{Position(Bird->x, Bird->y - 1); printf(" ");
Position(Bird->x, Bird->y); printf("Ю");
Position(38, 2); printf("Score:%d", Score);
}
void Loop_Bg(Bg *q) //障碍物x坐标左移,并记录成绩
{Bg *p = q; int i = 0;
while (++i <= 5)
{p->x = p->x - 1; p = p->next;
if (Bird->x == p->x)
{Score += 1;
if (Score % 4 == 0 && Grade<4)Grade++;
}
}
}
int main( )
{int i = 0; int t;
while (1)
{
Csh( );PrFK( );CreatBg( );
InsertBg(Bg1);InsertBg(Bg1);InsertBg(Bg1);
CreatBird( );
while (1)
{if (!CheckYN(Bg1))break;
Check_Bg(Bg1);Prt_Bg(Bg1);
PrtBird( );Loop_Bg(Bg1);
Bird->y = Bird->y + 1;
if (GetAsyncKeyState(VK_UP)) //按下了向上方向键
{Position(Bird->x, Bird->y - 1);printf(" ");
Bird->y = Bird->y - 4;
}
Sleep(200); //程序延时200毫秒(数值大小决定游戏速度快慢)
i = 0;
}
Position(6, 25);
printf("游戏结束! 请输入:0.退出 1.重玩");
scanf("%d",&t);
if (t==0)break;
system("cls"); Score = 0;
}
return 0;
}
5. 如何让乐高ev3履带式小车碰到障碍物后先后退一些,然后再转弯。它前面有触动传感器。求如何编程。
很简单啊,循环启动移动槽,触动传感器按压下去跳出循环。然后倒车1圈或若干。全部移动槽就可以,变换正负值就行。
6. 怎么编写51单片机C程序让智能循迹小车,无论是否遇到障碍物都朝着目标走啊跪求大神解答。。
http://code.21ic.com/code/27229基于51单片机运用两个单片机控制小车前进,一个控制转向,一个控制后轮前进,两个单片机没有联系各自工作。21ic电子技术网站上有很多源码,可以找找看!