欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C語(yǔ)言實(shí)現(xiàn)圖形化打磚塊游戲

 更新時(shí)間:2022年05月13日 10:47:11   作者:小雪菜本菜  
這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)圖形化打磚塊游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了C語(yǔ)言實(shí)現(xiàn)圖形化打磚塊游戲的具體代碼,供大家參考,具體內(nèi)容如下

#include<stdio.h>?
#include<conio.h>
#include<easyx.h>
#include<Windows.h>
#define WINDOW_Width ?768
#define WINDOW_Height 1073?
#define BrickWidth 81
#define BrickHeight 27
#define ROWS 5 ? ? //行
#define COLS 8 ? ? //列
enum bk { null, red, orange, yellow, green, blue };
#define Broad_Width 110
#define Broad_Height 20
int brick[ROWS][COLS] = { 0 };
IMAGE img[6], img_ball[2]; IMAGE img_bk, img_board;
?
int Ball_x = 6; //球的x方向向量 ??
int Ball_y = -6;//球的y方向向量 ?
#define Radius 5
int Broad_x = (WINDOW_Width - Broad_Width) / 2 +25; //Broad初始化
int Broad_y = WINDOW_Height - Broad_Height-100;
?
int circle_x = WINDOW_Width / 2-16; ? ? ? ? ? ? ? //circle初始化
int circle_y = WINDOW_Height - Radius - Broad_Height-122 ;
void loadRescource()
{
?? ?loadimage(img + 1, "./res/redblock.png",78,25);
?? ?loadimage(img + 2, "./res/orangeblock.png",78,25);
?? ?loadimage(img + 3, "./res/yellowblock.png",78,25);
?? ?loadimage(img + 4, "./res/greenblock.png",78,25);
?? ?loadimage(img + 5, "./res/blueblock.png",78,25);
?
?? ?loadimage(&img_bk, "./res/bk.png");
?
?? ?loadimage(img_ball + 0, "./res/ball0.png");
?? ?loadimage(img_ball + 1, "./res/ball.png");
?
?? ?loadimage(&img_board, "./res/board.png");
?
}
void drawBall()
{
?? ?putimage(circle_x, circle_y, &img_ball[0]);
?? ?putimage(circle_x, circle_y, &img_ball[1]);
?
}
?
?
void ballMove()
{
?? ?circle_x += Ball_x;
?? ?circle_y += Ball_y;
?
}
int ?DisappearBrick()
{
?? ?int ZK_COL =( circle_x-60) / BrickWidth;
?? ?int ZK_ROW = (circle_y-250) / BrickHeight;
?
?? ?if (ZK_ROW < 5 && ZK_COL < 8 && brick[ZK_ROW][ZK_COL] != -1)
?? ?{
?? ??? ?brick[ZK_ROW][ZK_COL] = -1;
?? ??? ?return 1;
?
?? ?}return 0;
}
//碰撞檢測(cè)int circle_x, int circle_y
void CollisionDetection()
{
?? ?//球如果往右邊移動(dòng),檢測(cè)球是否撞上右邊沿
?? ?if (Ball_x > 0 && circle_x >= WINDOW_Width - Radius-55)
?? ?{
?? ??? ?Ball_x = -6;
?? ?}
?? ?//球如果往上邊移動(dòng),檢測(cè)球是否撞上上邊沿
?? ?if (Ball_y < 0 && circle_y <= Radius || DisappearBrick())
?? ?{
?? ??? ?Ball_y = 6;
?? ?}
?? ?//球如果往左邊移動(dòng),檢測(cè)球是否撞上左邊沿
?? ?if (Ball_x < 0 && circle_x <= Radius +35)
?? ?{
?? ??? ?Ball_x = 6;
?? ?}
?? ?//球如果往下邊移動(dòng),檢測(cè)球是否撞上下邊沿
?? ?if (Ball_y > 0 && circle_y >= WINDOW_Height - Radius)
?? ?{
?? ??? ?Ball_y = 0;
?? ??? ?Ball_x = 0;
?
?? ?}
?? ?//檢測(cè)球是否撞上板子,只能從上往下撞,只有兩種極限情況
?? ?if ((Ball_y > 0) && (circle_y >= (Broad_y - Radius) - 25) &&//球y坐標(biāo)
?? ??? ?(circle_x >= Broad_x) && (circle_x <= (Broad_x + Broad_Width)))
?? ?{
?? ??? ?Ball_y = -6;
?? ?}
?
}
//鍵盤控制
void KeyControl()
{
?? ?CollisionDetection();?? ?//不管有沒有按鍵都要碰撞檢測(cè)
?? ?int ch;
?? ?if (true == _kbhit())
?? ?{ ? ? ? ? ? ? ? ? ? ? ? //檢測(cè)是否有按鍵
?? ??? ?ch = _getch();//獲取按鍵的值
?? ??? ?switch (ch)
?? ??? ?{
?? ??? ?case 'a':
?? ??? ?case 'A':
?? ??? ?case 75:
?? ??? ??? ?if(Broad_x >= Radius + 35+38)
?? ??? ??? ?Broad_x -= 50;
?? ??? ??? ?break;
?? ??? ?case 'd':
?? ??? ?case 'D':
?? ??? ?case 77:
?? ??? ??? ?if (Broad_x <= WINDOW_Width - Radius - 55-149)
?? ??? ??? ?Broad_x += 50;
?? ??? ??? ?break;
?? ??? ?}
?? ?}
}
void DrawAllBrick()
{
?? ?for (int i = 0; i < ROWS; i++)
?? ?{
?? ??? ?for (int j = 0; j < COLS; j++)
?? ??? ??? ?switch (brick[i][j])
?? ??? ??? ?{
?? ??? ??? ?case 1:
?? ??? ??? ??? ?putimage(j * 81 + 60, i * 27 + 250, &img[1]);
?? ??? ??? ??? ?break;
?? ??? ??? ?case 2:
?? ??? ??? ??? ?putimage(j * 81 + 60, i * 27 + 250, &img[2]);
?? ??? ??? ??? ?break;
?? ??? ??? ?case 3:
?? ??? ??? ??? ?putimage(j * 81 + 60, i * 27 + 250, &img[3]);
?? ??? ??? ??? ?break;
?? ??? ??? ?case 4:
?? ??? ??? ??? ?putimage(j * 81 + 60, i * 27 + 250, &img[4]);
?? ??? ??? ??? ?break;
?? ??? ??? ?case 5:
?? ??? ??? ??? ?putimage(j * 81 + 60, i * 27 + 250, &img[5]);
?? ??? ??? ?}
?? ?}
?
}
void init(int ?brick[][COLS])
{
?? ?int k = 1;
?? ?for (int i = 0; i < ROWS; i++)
?? ?{
?
?? ??? ?for (int j = 0; j < COLS; j++)
?? ??? ?{
?
?? ??? ??? ?brick[i][j] = k;
?
?? ??? ?}
?? ??? ?k++;
?? ?}
?
}
?
int main()
{
?? ?initgraph(WINDOW_Width, WINDOW_Height/*,EW_SHOWCONSOLE*/);
?? ?init(brick);
?? ?loadRescource();
?
?? ?while (true)
?? ?{
?? ??? ?BeginBatchDraw();
?
?? ??? ?putimage(0, 0, &img_bk);
?
?? ??? ?putimage(Broad_x, Broad_y, &img_board);
?
?? ??? ?DrawAllBrick();
?
?? ??? ?drawBall();
?? ??? ?ballMove();
?? ??? ?KeyControl();
?? ??? ?DisappearBrick();
?
?? ??? ?EndBatchDraw();
?? ??? ?Sleep(20);
?? ?}
?? ?while (1);
?? ?return 0;
}

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • C++構(gòu)造函數(shù)初始化順序詳解

    C++構(gòu)造函數(shù)初始化順序詳解

    這篇文章主要介紹了C++構(gòu)造函數(shù)初始化順序詳解,是對(duì)C++代碼的運(yùn)行機(jī)制深入探討,需要的朋友可以參考下
    2014-10-10
  • 深入淺析C語(yǔ)言中堆棧和隊(duì)列

    深入淺析C語(yǔ)言中堆棧和隊(duì)列

    這篇文章主要介紹了深入淺析C語(yǔ)言中堆棧和隊(duì)列的相關(guān)資料,需要的朋友可以參考下
    2016-06-06
  • 詳解C語(yǔ)言之預(yù)處理(下)

    詳解C語(yǔ)言之預(yù)處理(下)

    這篇文章主要介紹了C語(yǔ)言程序的預(yù)處理,小編覺得這篇文章寫的還不錯(cuò),需要的朋友可以參考下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • Python繪圖之詳解matplotlib

    Python繪圖之詳解matplotlib

    這篇文章主要介紹了Python繪圖之詳解matplotlib,本篇文章通過簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-07-07
  • C++私有繼承(二)

    C++私有繼承(二)

    這篇文章主要介紹了C++私有繼承,在私有繼承時(shí),基類的公有對(duì)象以及保護(hù)對(duì)象會(huì)變成派生類的私有對(duì)象。我們可以在派生類方法當(dāng)中使用它,但無(wú)法通過派生類對(duì)象直接調(diào)用,但無(wú)法訪問基類的私有方法和對(duì)象,下面具體內(nèi)容,需要的朋友可以參考一下
    2022-01-01
  • C語(yǔ)言菜鳥基礎(chǔ)教程之Hello World

    C語(yǔ)言菜鳥基礎(chǔ)教程之Hello World

    C語(yǔ)言是一門通用計(jì)算機(jī)編程語(yǔ)言,應(yīng)用廣泛。C語(yǔ)言的設(shè)計(jì)目標(biāo)是提供一種能以簡(jiǎn)易的方式編譯、處理低級(jí)存儲(chǔ)器、產(chǎn)生少量的機(jī)器碼以及不需要任何運(yùn)行環(huán)境支持便能運(yùn)行的編程語(yǔ)言。
    2017-10-10
  • C語(yǔ)言實(shí)現(xiàn)登錄注冊(cè)和忘記密碼功能

    C語(yǔ)言實(shí)現(xiàn)登錄注冊(cè)和忘記密碼功能

    這篇文章主要為大家詳細(xì)介紹了C語(yǔ)言實(shí)現(xiàn)登錄、注冊(cè)和忘記密碼功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-12-12
  • 淺析c++ 中const關(guān)鍵字

    淺析c++ 中const關(guān)鍵字

    const是一個(gè)C++語(yǔ)言的限定符,它限定一個(gè)變量不允許被改變。使用const在一定程度上可以提高程序的安全性和可靠性。下面通過本文給大家分享c++ const關(guān)鍵字的相關(guān)知識(shí),一起看看吧
    2017-06-06
  • Unreal學(xué)習(xí)之簡(jiǎn)單三角形的繪制詳解

    Unreal學(xué)習(xí)之簡(jiǎn)單三角形的繪制詳解

    之所以寫這個(gè)繪制簡(jiǎn)單三角形的實(shí)例其實(shí)是想知道如何在Unreal中通過代碼繪制自定義Mesh,如果你會(huì)繪制一個(gè)三角形,那么自然就會(huì)繪制復(fù)雜的Mesh了。所以這是很多圖形工作者的第一課,快跟隨小編一起學(xué)習(xí)起來(lái)吧
    2023-02-02
  • 二叉樹中葉子節(jié)點(diǎn)的統(tǒng)計(jì)和樹高問題

    二叉樹中葉子節(jié)點(diǎn)的統(tǒng)計(jì)和樹高問題

    今天小編就為大家分享一篇關(guān)于二叉樹中葉子節(jié)點(diǎn)的統(tǒng)計(jì)和樹高問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03

最新評(píng)論