91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

C語言中怎么用easyx實現消磚塊游戲

發布時間:2022-05-13 09:12:29 來源:億速云 閱讀:190 作者:iii 欄目:開發技術

這篇文章主要講解了“C語言中怎么用easyx實現消磚塊游戲”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“C語言中怎么用easyx實現消磚塊游戲”吧!

一、最終效果展示

效果圖如下:

C語言中怎么用easyx實現消磚塊游戲

二、繪制靜態的擋板

C語言中怎么用easyx實現消磚塊游戲

代碼如下:

#include<conio.h>
#include<graphics.h>

#define High 480 //游戲畫面尺寸
#define Width 640

//全局變量
int ball_x,ball_y;//小球的坐標
int ball_vx,ball_vy;//小球的速度
int radius;//小球的半徑
int bar_x,bar_y;//擋板的中心坐標
int bar_high,bar_width;//擋板的高度和寬度
int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標


void startup()//數據的初始化
{
    ball_x=Width/2;
    ball_y=High/2;
    ball_vx=1;
    ball_vy=1;
    radius=20;

    bar_high=High/20;
    bar_width=Width/5;
    bar_x=Width/2;
    bar_y=High-bar_high/2;
    bar_left=bar_x-bar_width/2;
    bar_right=bar_x+bar_width/2;
    bar_top=bar_y-bar_high/2;
    bar_bottom=bar_y+bar_high/2;

    initgraph(Width,High);
    BeginBatchDraw();
}

void clean()//顯示畫面
{
    setcolor(BLACK);//繪制黑線,黑色填充的圓
    setfillcolor(BLACK);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板
}

void show()//顯示畫面
{
    setcolor(YELLOW);//繪制黃線,綠色填充的圓
    setfillcolor(GREEN);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板

    FlushBatchDraw();
    Sleep(3);
}

void updateWithoutInput()//與用戶輸入無關的更新
{
        ball_x=ball_x+ball_vx;
        ball_y=ball_y,ball_vy;//更新小球的坐標

        if( (ball_x<=radius)||(ball_x>=Width-radius))
            ball_vx=-ball_vx;
        if( (ball_y<=radius)||(ball_y>=High-radius))
            ball_vy=-ball_vy;
}

void updateWithInput()//與用戶輸入有關的更新
{

}

void gameover()
{
    EndBatchDraw();
    closegraph();
}

int main()
{
    startup();//數據的初始化
    while(1)
    {
        clean();//把之前繪制的內容清除
        updateWithoutInput();//與用戶輸入無關的更新
        updateWithInput();//與用戶輸入有關的更新
        show();//顯示新畫面
    }
}

效果圖如下:

C語言中怎么用easyx實現消磚塊游戲

三、控制擋板

代碼如下:

#include<conio.h>
#include<graphics.h>

#define High 480 //游戲畫面尺寸
#define Width 640

//全局變量
int ball_x,ball_y;//小球的坐標
int ball_vx,ball_vy;//小球的速度
int radius;//小球的半徑
int bar_x,bar_y;//擋板的中心坐標
int bar_high,bar_width;//擋板的高度和寬度
int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標


void startup()//數據的初始化
{
    ball_x=Width/2;
    ball_y=High/2;
    ball_vx=1;
    ball_vy=1;
    radius=20;

    bar_high=High/20;
    bar_width=Width/5;
    bar_x=Width/2;
    bar_y=High-bar_high/2;
    bar_left=bar_x-bar_width/2;
    bar_right=bar_x+bar_width/2;
    bar_top=bar_y-bar_high/2;
    bar_bottom=bar_y+bar_high/2;

    initgraph(Width,High);
    BeginBatchDraw();
}

void clean()//顯示畫面
{
    setcolor(BLACK);//繪制黑線,黑色填充的圓
    setfillcolor(BLACK);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板
}

void show()//顯示畫面
{
    setcolor(YELLOW);//繪制黃線,綠色填充的圓
    setfillcolor(GREEN);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板

    FlushBatchDraw();
    Sleep(3);
}

void updateWithoutInput()//與用戶輸入無關的更新
{
    //擋板和小球碰撞,小球反彈
    if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))
        ||((ball_y-radius<=bar_bottom)&&(ball_y-radius>bar_top-bar_high/3)))
        if((ball_x>=bar_left)&&(ball_x<=bar_right))
            ball_vy=-ball_vy;

    ball_x=ball_x+ball_vx;
    ball_y=ball_y,ball_vy;//更新小球的坐標

    if( (ball_x<=radius)||(ball_x>=Width-radius))
        ball_vx=-ball_vx;
    if( (ball_y<=radius)||(ball_y>=High-radius))
        ball_vy=-ball_vy;
}

void updateWithInput()//與用戶輸入有關的更新
{
    char input;
    if(kbhit())
    {
        input=getch();
        if(input=='a'&&bar_left>0)
        {
            bar_x=bar_x-15;//位置左移
            bar_left=bar_x-bar_width/2;
            bar_right=bar_x+bar_width/2;
        }
        if(input=='d'&&bar_right<Width)
        {
            bar_x=bar_x+15;//位置左移
            bar_left=bar_x-bar_width/2;
            bar_right=bar_x+bar_width/2;
        }
        if(input=='w'&&bar_top>0)
        {
            bar_y=bar_y-15;//位置左移
            bar_top=bar_y-bar_high/2;
            bar_bottom=bar_y+bar_high/2;
        }
        if(input=='s'&&bar_bottom<High)
        {
            bar_y=bar_y+15;//位置右移
            bar_top=bar_y-bar_high/2;
            bar_bottom=bar_y+bar_high/2;
        }
    }
}

void gameover()
{
    EndBatchDraw();
    closegraph();
}

int main()
{
    startup();//數據的初始化
    while(1)
    {
        clean();//把之前繪制的內容清除
        updateWithoutInput();//與用戶輸入無關的更新
        updateWithInput();//與用戶輸入有關的更新
        show();//顯示新畫面
    }
}

效果圖如下:

C語言中怎么用easyx實現消磚塊游戲

四、消磚塊

C語言中怎么用easyx實現消磚塊游戲

代碼如下:

#include<conio.h>
#include<graphics.h>

#define High 480 //游戲畫面尺寸
#define Width 640
#define Brick_num 10

//全局變量
int ball_x,ball_y;//小球的坐標
int ball_vx,ball_vy;//小球的速度
int radius;//小球的半徑
int bar_x,bar_y;//擋板的中心坐標
int bar_high,bar_width;//擋板的高度和寬度
int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標

int isBrickExisted[Brick_num];//每個磚塊是否存在,1為存在,0為沒有了
int brick_high,brick_width;//每個磚塊的高度和寬度

void startup()//數據的初始化
{
    ball_x=Width/2;
    ball_y=High/2;
    ball_vx=1;
    ball_vy=1;
    radius=20;

    bar_high=High/20;
    bar_width=Width/5;
    bar_x=Width/2;
    bar_y=High-bar_high/2;
    bar_left=bar_x-bar_width/2;
    bar_right=bar_x+bar_width/2;
    bar_top=bar_y-bar_high/2;
    bar_bottom=bar_y+bar_high/2;

    brick_width=Width/Brick_num;
    brick_high=High/Brick_num;

    int i;
    for(i=0;i<Brick_num;i++)
        isBrickExisted[i]=1;
    initgraph(Width,High);
    BeginBatchDraw();
}

void clean()//顯示畫面
{
    setcolor(BLACK);//繪制黑線,黑色填充的圓
    setfillcolor(BLACK);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板

    int i,brick_left,brick_right,brick_top,brick_bottom;
    for(i=0;i<Brick_num;i++)
    {
        brick_left=i*brick_width;
        brick_right=brick_left+brick_width;
        brick_top=0;
        brick_bottom=brick_high;
        if(!isBrickExisted[i])//磚塊沒有了,繪制黑色
            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);
    }
}

void show()//顯示畫面
{
    setcolor(YELLOW);//繪制黃線,綠色填充的圓
    setfillcolor(GREEN);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板

    int i,brick_left,brick_right,brick_top,brick_bottom;
    for(i=0;i<Brick_num;i++)
    {
        brick_left=i*brick_width;
        brick_right=brick_left+brick_width;
        brick_top=0;
        brick_bottom=brick_high;

        if(isBrickExisted[i])//磚塊存在,繪制磚塊
        {
            setcolor(WHITE);
            setfillcolor(RED);
            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);//繪制磚塊
        }
    }
    FlushBatchDraw();
    Sleep(3);
}

void updateWithoutInput()//與用戶輸入無關的更新
{
    //擋板和小球碰撞,小球反彈
    if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))
        ||((ball_y-radius<=bar_bottom)&&(ball_y-radius>bar_top-bar_high/3)))
        if((ball_x>=bar_left)&&(ball_x<=bar_right))
            ball_vy=-ball_vy;

    ball_x=ball_x+ball_vx;
    ball_y=ball_y+ball_vy;//更新小球的坐標

    //小球和邊界碰撞
    if( (ball_x<=radius)||(ball_x>=Width-radius))
        ball_vx=-ball_vx;
    if( (ball_y<=radius)||(ball_y>=High-radius))
        ball_vy=-ball_vy;

    //判斷小球是否和某個磚塊碰撞
    int i,brick_left,brick_right,brick_top,brick_bottom;
    for(i=0;i<Brick_num;i++)
    {
        if(isBrickExisted[i])//磚塊存在才判斷
        {
            brick_left=i*brick_width;
            brick_right=brick_left+brick_width;
            brick_bottom=brick_high;
            if((ball_y==brick_bottom+radius)&&(ball_x>=brick_left)&&(ball_x<=
                brick_right))
            {
                isBrickExisted[i]=0;
                ball_vy=-ball_vy;
            }
        }
    }
}

void updateWithInput()//與用戶輸入有關的更新
{
    char input;
    if(kbhit())
    {
        input=getch();
        if(input=='a'&&bar_left>0)
        {
            bar_x=bar_x-15;//位置左移
            bar_left=bar_x-bar_width/2;
            bar_right=bar_x+bar_width/2;
        }
        if(input=='d'&&bar_right<Width)
        {
            bar_x=bar_x+15;//位置左移
            bar_left=bar_x-bar_width/2;
            bar_right=bar_x+bar_width/2;
        }
    }
}

void gameover()
{
    EndBatchDraw();
    closegraph();
}

int main()
{
    startup();//數據的初始化
    while(1)
    {
        clean();//把之前繪制的內容清除
        updateWithoutInput();//與用戶輸入無關的更新
        updateWithInput();//與用戶輸入有關的更新
        show();//顯示新畫面
    }
}

效果圖如下:

C語言中怎么用easyx實現消磚塊游戲

五、鼠標交互

C語言中怎么用easyx實現消磚塊游戲

先看一個關于鼠標交互的實例

#include<graphics.h>
#include<conio.h>
int main(void)
{
    initgraph(640,480);//初始化圖形窗口
    MOUSEMSG m;//定義鼠標消息
    while(1)
    {
        m=GetMouseMsg();//獲取一條鼠標消息
        if(m.uMsg==WM_MOUSEMOVE)
        {
            putpixel(m.x,m.y,WHITE);//鼠標移動的時候畫小白點
        }
        else if(m.uMsg==WM_LBUTTONDOWN)
        {
            rectangle(m.x-5,m.y-5,m.x+5,m.y+5);
            //鼠標左鍵按下時在鼠標位置畫一個方塊
        }
        else if(m.uMsg==WM_RBUTTONUP)
        {
            circle(m.x,m.y,10);
            //鼠標右鍵按下時在鼠標位置畫一個圓
        }
    }
    return 0;
}

用鼠標控制擋板移動,按鼠標左鍵初始化小球位置

代碼如下:

#include<conio.h>
#include<graphics.h>

#define High 480 //游戲畫面尺寸
#define Width 640
#define Brick_num 10

//全局變量
int ball_x,ball_y;//小球的坐標
int ball_vx,ball_vy;//小球的速度
int radius;//小球的半徑
int bar_x,bar_y;//擋板的中心坐標
int bar_high,bar_width;//擋板的高度和寬度
int bar_left,bar_right,bar_top,bar_bottom;//擋板的左右上下位置坐標

int isBrickExisted[Brick_num];//每個磚塊是否存在,1為存在,0為沒有了
int brick_high,brick_width;//每個磚塊的高度和寬度

void startup()//數據的初始化
{
    ball_x=Width/2;
    ball_y=High/2;
    ball_vx=1;
    ball_vy=1;
    radius=20;

    bar_high=High/20;
    bar_width=Width/5;
    bar_x=Width/2;
    bar_y=High-bar_high/2;
    bar_left=bar_x-bar_width/2;
    bar_right=bar_x+bar_width/2;
    bar_top=bar_y-bar_high/2;
    bar_bottom=bar_y+bar_high/2;

    brick_width=Width/Brick_num;
    brick_high=High/Brick_num;

    int i;
    for(i=0;i<Brick_num;i++)
        isBrickExisted[i]=1;
    initgraph(Width,High);
    BeginBatchDraw();
}

void clean()//顯示畫面
{
    setcolor(BLACK);//繪制黑線,黑色填充的圓
    setfillcolor(BLACK);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黑色,黑色填充的擋板

    int i,brick_left,brick_right,brick_top,brick_bottom;
    for(i=0;i<Brick_num;i++)
    {
        brick_left=i*brick_width;
        brick_right=brick_left+brick_width;
        brick_top=0;
        brick_bottom=brick_high;
        if(!isBrickExisted[i])//磚塊沒有了,繪制黑色
            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);
    }
}

void show()//顯示畫面
{
    setcolor(YELLOW);//繪制黃線,綠色填充的圓
    setfillcolor(GREEN);
    fillcircle(ball_x,ball_y,radius);
    bar(bar_left,bar_top,bar_right,bar_bottom);//繪制黃色,綠色填充的擋板

    int i,brick_left,brick_right,brick_top,brick_bottom;
    for(i=0;i<Brick_num;i++)
    {
        brick_left=i*brick_width;
        brick_right=brick_left+brick_width;
        brick_top=0;
        brick_bottom=brick_high;

        if(isBrickExisted[i])//磚塊存在,繪制磚塊
        {
            setcolor(WHITE);
            setfillcolor(RED);
            fillrectangle(brick_left,brick_top,brick_right,brick_bottom);//繪制磚塊
        }
    }
    FlushBatchDraw();
    Sleep(3);
}

void updateWithoutInput()//與用戶輸入無關的更新
{
    //擋板和小球碰撞,小球反彈
    if(((ball_y+radius>=bar_top)&&(ball_y+radius<bar_bottom-bar_high/3))
        ||((ball_y-radius<=bar_bottom)&&(ball_y-radius>bar_top-bar_high/3)))
        if((ball_x>=bar_left)&&(ball_x<=bar_right))
            ball_vy=-ball_vy;

    ball_x=ball_x+ball_vx;
    ball_y=ball_y+ball_vy;//更新小球的坐標

    //小球和邊界碰撞
    if( (ball_x<=radius)||(ball_x>=Width-radius))
        ball_vx=-ball_vx;
    if( (ball_y<=radius)||(ball_y>=High-radius))
        ball_vy=-ball_vy;

    //判斷小球是否和某個磚塊碰撞
    int i,brick_left,brick_right,brick_top,brick_bottom;
    for(i=0;i<Brick_num;i++)
    {
        if(isBrickExisted[i])//磚塊存在才判斷
        {
            brick_left=i*brick_width;
            brick_right=brick_left+brick_width;
            brick_bottom=brick_high;
            if((ball_y==brick_bottom+radius)&&(ball_x>=brick_left)&&(ball_x<=
                brick_right))
            {
                isBrickExisted[i]=0;
                ball_vy=-ball_vy;
            }
        }
    }
}

void updateWithInput()//與用戶輸入有關的更新
{
    /*char input;
    if(kbhit())
    {
    input=getch();
    if(input=='a'&&bar_left>0)
    {
    bar_x=bar_x-15;//位置左移
    bar_left=bar_x-bar_width/2;
    bar_right=bar_x+bar_width/2;
    }
    if(input=='d'&&bar_right<Width)
    {
    bar_x=bar_x+15;//位置左移
    bar_left=bar_x-bar_width/2;
    bar_right=bar_x+bar_width/2;
    }
    }*/
    MOUSEMSG m;//定義鼠標信息
    if(MouseHit())//這個函數用于檢測當前是否有鼠標消息
    {
        m=GetMouseMsg();//獲取一條鼠標消息
        if(m.uMsg==WM_MOUSEMOVE)
        {
            //擋板的位置等于鼠標所在的位置
            bar_x=m.x;
            bar_y=m.y;
            bar_left=bar_x-bar_width/2;
            bar_right=bar_x+bar_width/2;
            bar_top=bar_y-bar_high/2;
            bar_bottom=bar_y+bar_high/2;
        }
        else if(m.uMsg==WM_LBUTTONDOWN)
        {
            ball_x=bar_x;//初始化小球的位置為擋板上面中心
            ball_y=bar_top-radius-3;
        }
    }
}

void gameover()
{
    EndBatchDraw();
    closegraph();
}

int main()
{
    startup();//數據的初始化
    while(1)
    {
        clean();//把之前繪制的內容清除
        updateWithoutInput();//與用戶輸入無關的更新
        updateWithInput();//與用戶輸入有關的更新
        show();//顯示新畫面
    }
}

效果圖如下:

C語言中怎么用easyx實現消磚塊游戲

感謝各位的閱讀,以上就是“C語言中怎么用easyx實現消磚塊游戲”的內容了,經過本文的學習后,相信大家對C語言中怎么用easyx實現消磚塊游戲這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

会理县| 阜平县| 曲阜市| 张北县| 周宁县| 方正县| 蒙山县| 炉霍县| 卓尼县| 五家渠市| 拜城县| 博野县| 观塘区| 黄冈市| 石台县| 和政县| 文登市| 册亨县| 姜堰市| 英德市| 英吉沙县| 青神县| 深泽县| 湖口县| 牟定县| 准格尔旗| 洪江市| 荥经县| 德江县| 浪卡子县| 平安县| 文山县| 江油市| 合川市| 新郑市| 河南省| 辽阳市| 镇宁| 汕头市| 灵璧县| 嘉义县|