当前位置:首页 » 编程语言 » c语言求速度的编程怎么写
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言求速度的编程怎么写

发布时间: 2022-12-08 14:24:55

c语言贪吃蛇的速度控制程序怎么编

  1. 可以Sleep函数设置延时来控制贪吃蛇的速度。

    函数名: Sleep
    功 能: 执行挂起一段时间
    用 法: void Sleep(DWORD dwMilliseconds);
    在VC中使用带上头文件
    #include <windows.h>
    ( Sleep函数存放头文件:WinBase.h)
    在gcc编译器中,使用的头文件因gcc版本的不同而不同
    #include <unistd.h>
    Sleep()单位为毫秒,sleep()单位为秒(如果需要更精确可以用usleep单位为微秒)
    返回值
    若进程/线程挂起到参数所指定的时间则返回0,若有信号中断则返回剩余秒数。

  2. 例程:

    /*--------------------snake.h--------------------*/
    #ifndefSNAKE_H
    #defineSNAKE_H

    #defineLEFT'a'
    #defineRIGHT'd'
    #defineDOWN's'
    #defineUP'w'
    #defineESC27

    #defineN200/*蛇的最大长度*/

    charkey;/*控制按键*/

    structFood
    {
    intx;/*食物的横坐标*/
    inty;/*食物的纵坐标*/
    intyes;/*判断是否要出现食物的变量*/
    }food;/*食物的结构体*/

    structSnake
    {
    intx[N];
    inty[N];
    intnode;/*蛇的节数*/
    intdirection;/*蛇移动方向*/
    intlife;/*蛇的生命,0活着,1死亡*/
    }snake;
    #endif



    /*--------------------snake.c--------------------*/
    #include<graphics.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<time.h>
    #include<stdio.h>
    #include"snake.h"

    intscore=0;
    intgamespeed=100;//蛇运行速度

    staticvoidInit(void);/*图形驱动*/
    staticvoidClose(void);/*图形结束*/
    staticvoidGame_interface(void);/*游戏界面*/
    staticvoidGameOver(void);/*结束游戏*/
    staticvoidGamePlay(void);/*游戏过程*/
    staticvoidPrScore(void);/*输出成绩*/

    /*主函数*/
    intmain(void)
    {
    Init();
    Game_interface();
    GamePlay();
    Close();
    return0;
    }

    /*图形驱动*/
    staticvoidInit(void)
    {
    intgd=9,gm=2;

    initgraph(&gd,&gm,"");
    cleardevice();
    }

    /*开始画面,左上角坐标为(50,40),右下角坐标为(610,460)的围墙*/
    staticvoidGame_interface(void)
    {
    inti;

    setcolor(LIGHTCYAN);/*setbkcolor(LIGHTGREEN);*/
    setlinestyle(PS_SOLID,0,1);/*设置线型*/
    for(i=50;i<=600;i+=10)/*画边框*/
    {
    rectangle(i,40,i+10,49);/*上边框*/
    rectangle(i,451,i+10,460);/*下边框*/
    }
    for(i=40;i<=450;i+=10)
    {
    rectangle(50,i,59,i+10);/*左边框*/
    rectangle(601,i,610,i+10);/*右边框*/
    }
    }

    /*游戏主函数*/
    staticvoidGamePlay(void)
    {
    inti;

    srand(time(NULL));/*随机数发生器*/
    food.yes=1;/*1表示需要出现新食物,0表示已经存在食物*/
    snake.life=0;/*活着*/
    snake.direction=1;/*方向往右*/
    snake.x[0]=100;
    snake.y[0]=100;
    snake.x[1]=110;
    snake.y[1]=100;
    snake.node=2;/*节数*/

    PrScore();/*输出得分*/
    while(1)/*可以重复玩游戏,压ESC键结束*/
    {
    while(!kbhit())/*在没有按键的情况下,蛇自己移动*/
    {
    if(food.yes==1)/*需要出现新食物*/
    {
    food.x=rand()%400+60;
    food.y=rand()%350+60;
    while(food.x%10!=0)/*食物随机出现后必须让食物能够在整格内,这样才可以让蛇吃到*/
    food.x++;
    while(food.y%10!=0)
    food.y++;
    food.yes=0;/*画面上有食物了*/
    }
    if(food.yes==0)/*画面上有食物了就要显示*/
    {
    setcolor(GREEN);
    rectangle(food.x,food.y,food.x+10,food.y-10);
    }


    for(i=snake.node-1;i>0;i--)/*蛇的每个环节往前移动,也就是贪吃蛇的关键算法*/
    {
    snake.x[i]=snake.x[i-1];
    snake.y[i]=snake.y[i-1];
    }
    /*1,2,3,4表示右,左,上,下四个方向,通过这个判断来移动蛇头*/
    switch(snake.direction)
    {
    case1:
    snake.x[0]+=10;
    break;
    case2:
    snake.x[0]-=10;
    break;
    case3:
    snake.y[0]-=10;
    break;
    case4:
    snake.y[0]+=10;
    break;
    }
    /*从蛇的第四节开始判断是否撞到自己*/
    for(i=3;i<snake.node;i++)
    {
    if((snake.x[i]==snake.x[0])&&(snake.y[i]==snake.y[0]))
    {
    GameOver();/*显示失败*/
    snake.life=1;
    break;
    }
    }
    if((snake.x[0]<55)||(snake.x[0]>595)||(snake.y[0]<55)||(snake.y[0]>455))/*蛇是否撞到墙壁*/
    {


    GameOver();/*本次游戏结束*/
    snake.life=1;/*蛇死*/
    }
    if(snake.life==1)/*以上两种判断以后,如果蛇死就跳出内循环,重新开始*/
    break;
    if((snake.x[0]==food.x)&&(snake.y[0]==food.y))/*吃到食物以后*/
    {
    setcolor(BLACK);/*把画面上的食物东西去掉*/
    rectangle(food.x,food.y,food.x+10,food.y-10);
    snake.x[snake.node]=-20;
    snake.y[snake.node]=-20;

    /*新的一节先放在看不见的位置,下次循环就取前一节的位置*/

    snake.node++;/*蛇的身体长一节*/
    food.yes=1;/*画面上需要出现新的食物*/
    score+=10;
    PrScore();/*输出新得分*/
    }
    setcolor(RED);/*画出蛇*/


    for(i=0;i<snake.node;i++)
    rectangle(snake.x[i],snake.y[i],snake.x[i]+10,snake.y[i]-10);
    Sleep(gamespeed);/*用延迟控制贪吃蛇速度*/
    setcolor(BLACK);/*用黑色去除蛇的的最后一节*/
    rectangle(snake.x[snake.node-1],snake.y[snake.node-1],
    snake.x[snake.node-1]+10,snake.y[snake.node-1]-10);
    }/*endwhile(!kbhit)*/

    if(snake.life==1)/*如果蛇死就跳出循环*/
    break;

    key=getch();/*接收按键*/
    if(key==ESC)break;/*按ESC键退出*/

    switch(key)
    {
    caseUP:
    if(snake.direction!=4)/*判断是否往相反的方向移动*/
    snake.direction=3;
    break;
    caseRIGHT:
    if(snake.direction!=2)
    snake.direction=1;
    break;
    caseLEFT:
    if(snake.direction!=1)
    snake.direction=2;
    break;
    caseDOWN:
    if(snake.direction!=3)
    snake.direction=4;
    break;
    }

    }/*endwhile(1)*/
    }

    /*游戏结束*/
    staticvoidGameOver(void)
    {
    cleardevice();
    PrScore();
    setcolor(RED);
    setfont(56,0,"黑体");
    outtextxy(200,200,"GAMEOVER");
    getch();
    }

    /*输出成绩*/
    staticvoidPrScore(void)
    {
    charstr[10];

    setfillstyle(YELLOW);
    bar(50,15,220,35);
    setcolor(BROWN);
    setfont(16,0,"宋体");
    sprintf(str,"score:%d",score);
    outtextxy(55,16,str);
    }

    staticvoidClose(void)
    {
    closegraph();
    }

Ⅱ linux下C语言用socket网络编程怎么计算传输速度

这要你的通信程序协商一个协议,比如定义一个通信结构体,传文件的时候,一开始发送结构体的信息过去,告诉对端你的文件总大小,然后,传输过程中,统计已经收到或者发送的数据,做个除法就得到速率了。

具体这类协商,你可以自己随便想,也可以借鉴现有的比较好的一些设计,有些考虑断点续传的技术,还有压缩的,看你代码也不需要考虑吧。

Ⅲ 用C语言做(输入数据如下:先跑的速度(慢),先跑的时间,后跑的速度(快) 要求输出数据 追击时间

#include <stdio.h>
int main()
{
int Speed_F,Speed_L;
float time;
printf("请输入先跑的速度,时间:");
scanf("%d%lf",&Speed_F,&time);
printf("请输入后跑的速度:");
scanf("%d",&Speed_L);
printf("追击时间:%f.\n",time*Speed_F/(Speed_L-Speed_F));
return 0;
}

Ⅳ 求一篇通过初末速度以及位移计算加速度的c语言代码

设初速为v0,末速为ve,位移为s,加速度为a,代码举例如下:

#include<stdio.h>
intmain(intargc,char*argv[]){
doublev0,ve,s,t;
printf("Inputv0,ve&s(R:v0>=0,ve,s>0)... ");
if(scanf("%lf%lf%lf",&v0,&ve,&s)!=3||v0<0||ve<=0||s<=0){
printf("Inputerror,exit... ");
return0;
}
printf("a=%f ",(t=ve-v0)*t/2/s);
return0;
}

Ⅳ C语言如何编程实现利用位移求加速度,求大神指导!在线等

有公式就好求了,写一个该公式的函数就可以了
如:double func(double x)
{
//加速度用位移表示的公式,返回求得得值
}
void main(void)
{
double x;
double a;
scanf("%lf",&x);
a = func(x);
printf("%g",a);
}
基本思路就是这样了,不知道能不能帮上忙