机器人william hill官网
直播中

何波

15年用户 213经验值
擅长:EMC/EMI设计
私信 关注
[经验]

人形舞蹈机器人-鸥鹏制作

`该舞蹈机器人将机器人的动作与音乐合拍,做到动作可观赏性强,稳定性高。机器人是以人为模型,通过大量的舵机相连接,这好比人类的关节,再通过芯片(相当于人的大脑)控制舵机,通过编程让机器人完成各种动作。用VB语言进行编程。将机器人的动作与音乐合拍,动作精细美观是舞蹈的宗旨。舞蹈的音乐选择方面,具有新颖,节奏感强的特点。本只是单人舞蹈,机器人动作与音乐紧密配合,做到动作可观赏性强,稳定性高。

` 7f15c46bd7a84278f152b9ab5746f314.jpg

回帖(7)

zhoushenzhen

2016-4-12 18:08:47
#include
#include
#include
#include
#define NULL 0
#define UP  18432
#define DOWN 20480
#define LEFT 19200
#define RIGHT 19712
#define ESC  283
#define ENTER 7181
struct snake
{int centerx;
int centery;
int newx;
int newy;
struct snake *next;
};
struct snake *head;

int grade=60;                     /*控制速度的*******/
int a,b;                        /* 背静遮的 位置*/
void *far1,*far2,*far3,*far4;             /* 蛇身指针 背静遮的指针 虫子*/
int size1,size2,size3,size4;              /* **全局变量**/
int ch=RIGHT;                     /**************存按键 开始蛇的方向为RIGHT***********/
int chy=RIGHT;
int flag=0;                       /*********判断是否退出游戏**************/
int control=4;                     /***********判断上次方向和下次方向不冲突***/
int nextshow=1;                     /*******控制下次蛇身是否显示***************/
int scenterx;                      /***************随即矩形中心坐标***************/
int scentery;
int sx;                         /*******在a b 未改变前 得到他们的值 保证随机矩形也不在此出现*******/
int sy;               
  
/************************蛇身初始化**************************/
void snakede()
{
struct snake *p1,*p2;
head=p1=p2=(struct snake *)malloc(sizeof(struct snake));
p1->centerx=80;
p1->newx=80;
p1->centery=58;
p1->newy=58;
p1=(struct snake *)malloc(sizeof(struct snake));
p2->next=p1;
p1->centerx=58;
p1->newx=58;
p1->centery=58;
p1->newy=58;
p1->next=NULL;
}
/*******************end*******************/
void welcome()            /*************游戏开始界面 ,可以选择 速度**********/               
{
int key;
int size;
int x=240;
int y=300;
int f;
void *buf;
setfillstyle(SOLID_FILL,BLUE);
bar(98,100,112,125);
setfillstyle(SOLID_FILL,RED);
bar(98,112,112,114);
setfillstyle(SOLID_FILL,GREEN);
bar(100,100,110,125);
size=imagesize(98,100,112,125);
buf=malloc(size);
getimage(98,100,112,125,buf);
cleardevice();

setfillstyle(SOLID_FILL,BLUE);
bar(240,300,390,325);
outtextxy(193,310,"speed:");
setfillstyle(SOLID_FILL,RED);
bar(240,312,390,314);
setcolor(YELLOW);
outtextxy(240,330,"DOWN");
outtextxy(390,330,"UP");
outtextxy(240,360,"ENTER to start..." );
outtextxy(270,200,"SNAKE");
fei(220,220);
feiyang(280,220);
yang(340,220);
putimage(x,y,buf,COPY_PUT);
setcolor(RED);
rectangle(170,190,410,410);
while(1)
{ if(bioskey(1))                      /********8选择速度部分************/
  key=bioskey(0);
  switch(key)
  {  
    case ENTER:
   f=1;
   break;
    case DOWN:
    if(x>=240)
    { putimage(x-=2,y,buf,COPY_PUT);
   grade++;
   key=0;
   break;
    }
case UP:
    if(x<=375)
    { putimage(x+=2,y,buf,COPY_PUT);
   grade--;
    key=0;
   break;
    }
   }
   
   if (f==1)
   break;
}                           /********** end  ****************/
  

free(buf);
}
  
/*************************随即矩形*****************/
/***********当nextshow 为1的时候才调用此函数**********/

void ran()
{ int nx;
int ny;
int show;         /**********控制是否显示***********/
int jump=0;
struct snake *p;
p=head;
if(nextshow==1)      /***********是否开始随机产生***************/
  while(1)
  {show=1;
  randomize();
  nx=random(14);
  ny=random(14);
  scenterx=nx*22+58;
  scentery=ny*22+58;
   while(p!=NULL)
   {
    if(scenterx==p->centerx&&scentery==p->centery||scenterx==sx&&scentery==sy)
  {show=0;
  jump=1;
  break;
  }
    else
  p=p->next;
   if(jump==1)
  break;
  }
if(show==1)
  {putimage(scenterx-11,scentery-11,far3,COPY_PUT);
  nextshow=0;
  break;
  }

}
}

/***********过关动画**************/
void donghua()
{ int i;
cleardevice();
setbkcolor(BLACK);
randomize();
while(1)
{for(i=0;i<=5;i++)
{putpixel(random(640),random(80),13);
  putpixel(random(640),random(80)+80,2);
  putpixel(random(640),random(80)+160,3);
  putpixel(random(640),random(80)+240,4);
  putpixel(random(640),random(80)+320,1);
  putpixel(random(640),random(80)+400,14);
}
  setcolor(YELLOW);
  settextstyle(0,0,4);
  outtextxy(130,200,"Wonderful!!");
  setfillstyle(SOLID_FILL,10);
  bar(240,398,375,420);
  feiyang(300,400);
  fei(250,400);
  yang(350,400);
  if(bioskey(1))
  if(bioskey(0)==ESC)
{
      flag=1;
  break;
}
}
}

/*************************end************************/

/***********************初始化图形系统*********************/
void init()
{int a=DETECT,b;
int i,j;
initgraph(&a,&b,"");
}
/***************************end****************************/
  
/***画立体边框效果函数******/
void tline(int x1,int y1,int x2,int y2,int white,int black)
{ setcolor(white);
line(x1,y1,x2,y1);
line(x1,y1,x1,y2);
setcolor(black);
line(x2,y1,x2,y2);
line(x1,y2,x2,y2);
}
/****end*********/

/*************飞洋标志**********/
int feiyang(int x,int y)
{int feiyang[18][18]={ {0,0,0,0,0,0,1,1,1,1,1,1,0,1,1,0,0,0},
{0,0,0,0,0,1,1,1,0,0,1,1,1,1,1,0,0,0},
{0,0,0,0,1,1,1,0,0,0,0,0,1,1,1,0,0,0},
{0,0,0,1,1,1,0,0,0,0,0,0,0,1,1,0,0,0},
{0,0,0,1,1,0,0,0,0,0,0,1,1,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0},
{0,0,1,1,0,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,0,1,1,1,1,1,0,0,1,0,0,1,1,0,0,0,0},
{0,0,1,1,1,0,0,0,0,1,0,1,1,1,0,0,0,0},
{0,0,1,1,0,1,1,1,0,1,1,1,0,0,0,0,0,0},
{0,0,1,1,0,0,0,1,0,0,1,1,0,0,0,0,0,0},
{0,0,1,1,0,0,0,1,1,0,0,1,1,0,0,1,0,0},
{0,0,1,1,1,0,0,1,1,0,0,1,1,0,0,1,0,0},
{0,0,1,1,1,1,0,1,1,1,1,1,1,0,1,1,0,0},
{0,0,0,1,1,1,0,1,1,1,1,1,0,0,1,0,0,0},
{0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,0,0,0},
{0,0,0,0,0,1,1,1,0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,0,1,1,1,1,1,1,1,1,0,0,0,0,0}};
int i,j;
for(i=0;i<=17;i++)
for(j=0;j<=17;j++)
{if (feiyang[i][j]==1)
putpixel(j+x,i+y,RED);
}
}

/********"飞"字*************/
int fei(int x,int y)
{int fei[18][18]={{1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0},
{0,1,1,1,1,1,1,1,1,1,1,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0,1,1,1,0,0,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,0,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0},
{0,0,0,0,0,0,0,0,0,0,1,1,0,0,1,1,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0},
{0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0},
{0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0}};
int i,j;
for(i=0;i<=17;i++)
  for(j=0;j<=17;j++)
  {if (fei[i][j]==1)
    putpixel(j+x,i+y,BLUE);
  }
}
  
/*********"洋"字**************/
  
int yang(int x,int y)
{
int yang[18][18]={{0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0},
{1,1,0,0,0,0,1,1,1,0,0,0,1,1,0,0,0,0},
{0,1,1,1,0,0,0,1,1,1,0,1,1,0,0,0,0,0},
{0,0,1,1,0,0,0,0,0,1,1,1,0,0,0,1,0,0},
{0,0,0,1,0,1,1,1,1,1,1,1,1,1,1,1,1,0},
{0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{1,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0},
{0,0,1,1,0,0,0,1,1,1,1,1,1,1,1,0,0,0},
{0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,1,0,0,1,0,0,0,1,0,0,0,0,0,0,0},
{0,0,0,0,0,1,1,0,0,0,1,0,0,0,0,1,1,0},
{0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1},
{0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0},
{1,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,1,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0},
{0,0,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0}};
int i,j;
  for(i=0;i<=17;i++)
    for(j=0;j<=17;j++)
      {if (yang[i][j]==1)
         putpixel(j+x,i+y,BLUE);
       }
}
  

/******************主场景**********************/
int bort()
{ int a;
setfillstyle(SOLID_FILL,15);
bar(49,49,71,71);
setfillstyle(SOLID_FILL,BLUE);
bar(50,50,70,70);
size1=imagesize(49,49,71,71);
far1=(void *)malloc(size1);
getimage(49,49,71,71,far1);
cleardevice();
setfillstyle(SOLID_FILL,12);
bar(49,49,71,71);
size2=imagesize(49,49,71,71);
far2=(void *)malloc(size2);
getimage(49,49,71,71,far2);
setfillstyle(SOLID_FILL,12);
bar(49,49,71,71);
setfillstyle(SOLID_FILL,GREEN);
bar(50,50,70,70);
size3=imagesize(49,49,71,71);
far3=(void *)malloc(size3);
getimage(49,49,71,71,far3);
cleardevice();                    /*取蛇身节点  背景节点 虫子节点end*/
setbkcolor(8);
setfillstyle(SOLID_FILL,GREEN);
bar(21,23,600,450);
tline(21,23,600,450,15,8);              /***开始游戏场景边框 立体效果*******/
tline(23,25,598,448,15,8);
tline(45,45,379,379,8,15);
tline(43,43,381,381,8,15);
tline(390,43,580,430,8,15);
tline(392,45,578,428,8,15);
tline(412,65,462,85,15,8);
tline(410,63,464,87,15,8);
tline(410,92,555,390,15,8);
tline(412,94,553,388,15,8);
tline(431,397,540,420,15,8);
tline(429,395,542,422,15,8);
tline(46,386,377,428,8,15);
tline(44,384,379,430,8,15);
setcolor(8);
outtextxy(429,109,"press ENTER ");
outtextxy(429,129,"---to start");     /*键盘控制说明*/
outtextxy(429,169,"press ESC ");
outtextxy(429,189,"---to quiet");
outtextxy(469,249,"UP");
outtextxy(429,289,"LEFT");
outtextxy(465,329,"DOWN");
outtextxy(509,289,"RIGHT");
setcolor(15);
outtextxy(425,105,"press ENTER ");
outtextxy(425,125,"---to start");
outtextxy(425,165,"press ESC ");
outtextxy(425,185,"---to quiet");
outtextxy(465,245,"UP");
outtextxy(425,285,"LEFT");
outtextxy(461,325,"DOWN");
outtextxy(505,285,"RIGHT");       /*******end*************/
  
setcolor(8);
outtextxy(411,52,"score");
outtextxy(514,52,"left");
setcolor(15);
outtextxy(407,48,"score");
outtextxy(510,48,"left");

size4=imagesize(409,62,465,88);       /****分数框放到内存********/
far4=(void *)malloc(size4);
getimage(409,62,465,88,far4);
putimage(500,62,far4,COPY_PUT);      /*******输出生命框***********/
setfillstyle(SOLID_FILL,12);
setcolor(RED);
outtextxy(415,70,"0");         /***************输入分数为零**********/
  outtextxy(512,70,"20");          /*************显示还要吃 的虫子的数目*********/
  bar(46,46,378,378);
  feiyang(475,400);
  fei(450,400);
  yang(500,400);
  outtextxy(58,390,"mailto:jiangzhiliang002@tom.com");
  outtextxy(58,410,"snake game");
  outtextxy(200,410,"made by yefeng");
while(1)
{ if(bioskey(1))
  a=bioskey(0);
  if(a==ENTER)
break;
}

}
/******************gameover()******************/

void gameover()
{ char *p="GAME OVER";
int cha;
setcolor(YELLOW);
settextstyle(0,0,6);
outtextxy(100,200,p);

  while(1)
{if(bioskey(1))
  cha=bioskey(0);
  if(cha==ESC)
  {flag=1;
  break;
  }
}
  
  
  

}
/***********显示蛇身**********************/
void snakepaint()
{struct snake *p1;
p1=head;
putimage(a-11,b-11,far2,COPY_PUT);
while(p1!=NULL)
{putimage(p1->newx-11,p1->newy-11,far1,COPY_PUT);
p1=p1->next;
}
}
/****************end**********************/
/*********************蛇身刷新变化 游戏关键部分 *******************/
void snakechange()
{struct snake *p1,*p2,*p3,*p4,*p5;
int i,j;
static int n=0;
static int score;
static int left=20;
char sscore[5];
char sleft[1];
p2=p1=head;
while(p1!=NULL)
{ p1=p1->next;
  if(p1->next==NULL)
  {a=p1->newx;
  b=p1->newy;           /************记录最后节点的坐标************/
  sx=a;
  sy=b;
  }
  p1->newx=p2->centerx;
  p1->newy=p2->centery;
  p2=p1;
}
p1=head;
while(p1!=NULL)
{p1->centerx=p1->newx;
p1->centery=p1->newy;
p1=p1->next;
}

/********判断按键方向*******/
if(bioskey(1))
{ ch=bioskey(0);
   if(ch!=RIGHT&&ch!=LEFT&&ch!=UP&&ch!=DOWN&&ch!=ESC)   /********chy为上一次的方向*********/
   ch=chy;
}
switch(ch)
{
  case LEFT: if(control!=4)
{head->newx=head->newx-22;
         head->centerx=head->newx;
  control=2;
  if(head->newx<47)
         gameover();
     }
        else
     { head->newx=head->newx+22;
          head->centerx=head->newx;
   control=4;
   if(head->newx>377)
   gameover();
     }
  chy=ch;
  break;
  case DOWN:
        if(control!=1)
     { head->newy=head->newy+22;
          head->centery=head->newy;
   control=3;
   if(head->newy>377)
   gameover();
         }
         else
       { head->newy=head->newy-22;
    head->centery=head->newy;
           control=1;
    if(head->newy<47)
    gameover();
          }
         chy=ch;
         break;
  case RIGHT: if(control!=2)
  { head->newx=head->newx+22;
          head->centerx=head->newx;
          control=4;
   if(head->newx>377)
      gameover();
         }
         else
      { head->newx=head->newx-22;
          head->centerx=head->newx;
          control=2;
   if(head->newx<47)
   gameover();
  }
         chy=ch;
         break;
  case UP: if(control!=3)
    { head->newy=head->newy-22;
        head->centery=head->newy;
        control=1;
    if(head->newy<47)
    gameover();
       }
       else
    { head->newy=head->newy+22;
        head->centery=head->newy;
        control=3;
if(head->newy>377)
        gameover();
        }
        chy=ch;
        break;
  

  case ESC:
       flag=1;
       break;
}
  

/* if 判断是否吃蛇*/
if(flag!=1)
{ if(head->newx==scenterx&&head->newy==scentery)
{ p3=head;
   while(p3!=NULL)
   { p4=p3;
p3=p3->next;
   }
  p3=(struct snake *)malloc(sizeof(struct snake));
  p4->next=p3;
  p3->centerx=a;
  p3->newx=a;
  p3->centery=b;
  p3->newy=b;
  p3->next=NULL;
  a=500;
  b=500;
  putimage(409,62,far4,COPY_PUT);  /********** 分数框挡住**************/
  putimage(500,62,far4,COPY_PUT);  /*********把以前的剩下虫子的框挡住********/
  score=(++n)*100;
  left--;
  itoa(score,sscore,10);
  itoa(left,sleft,10);
  setcolor(RED);
  outtextxy(415,70,sscore);
  outtextxy(512,70,sleft);
  nextshow=1;
  if(left==0)           /************判断是否过关**********/
  donghua();             /*******如果过关,播放过关动画*********************/
}
p5=head;       /*********************判断是否自杀***************************/
p5=p5->next;
p5=p5->next;
p5=p5->next;
p5=p5->next;      /****从第五个节点判断是否自杀************/
while(p5!=NULL)
{if(head->newx==p5->centerx&&head->newy==p5->centery)
  { gameover();
    break;
  }
   else
  p5=p5->next;
}
}
}
/************snakechange()函数结束*******************/
  
  
  

/*****************************主函数******************************************/
int main()
{ int i;
init();       /**********初始化图形系统**********/
welcome();      /*********8欢迎界面**************/
bort();       /*********主场景***************/
snakede();      /**********连表初始化**********/
while(1)
{ snakechange();
  if(flag==1)
  break;
  snakepaint();
  ran();
  for(i=0;i<=grade;i++)
  delay(3000);
  }
free(far1);
free(far2);
free(far3);
free(far4);
closegraph();
return 0;
}
举报

随缘随缘

2016-6-6 17:12:45

谢谢楼主的分享 下载学习一下
举报

gezooo

2016-6-13 23:39:27
请问下 关节处用的什么电机,哪里可以买到?
举报

何波

2016-6-14 14:53:19
你上淘宝找鸥鹏机器人,问一下在线客服
举报

更多回帖

发帖
×
20
完善资料,
赚取积分