當前位置:首頁 » 編程語言 » 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);
}
基本思路就是這樣了,不知道能不能幫上忙