最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

C/C++編程筆記:飛翔的小鳥(Flappy Bird)——C語(yǔ)言版本

2020-08-14 21:48 作者:C語(yǔ)言編程__Plus  | 我要投稿

C語(yǔ)言游戲教學(xué)項(xiàng)目,有C基礎(chǔ)和對(duì)小游戲感興趣的可以看看,做出來(lái)成就感爆棚~

使用的編譯器是VS2013,圖片素材,可以自己百度尋找素材圖片,也可以在主頁(yè)群領(lǐng)取哦~

效果圖:


話不多說,接下來(lái)就奉上我們的源碼了(寫的時(shí)候包含了一些筆者的注釋,勿怪勿怪):

/*

1.創(chuàng)建一個(gè)可視化窗口

2.顯示一張背景圖

*/

#include <graphics.h>

#include <stdlib.h>

#include <conio.h>

#include <stdio.h>

#include <time.h>

#include <mmsystem.h>

#pragma comment(lib,"winmm.lib")

/*

stdlib.h? : Sleep

stdio.h ? : C語(yǔ)言頭文件

conio.h ? : _getch()

graphics.h: 圖形庫(kù)頭文件

寫的時(shí)候報(bào)錯(cuò),需要安裝

*/

int main()

{

//288*608

srand((unsigned int)time(NULL));

initgraph(288, 608);

struct 柱子 pillar[3];

for (int i = 0; i < 3; i++)

{

initPillar(pillar, i);

//讓柱子之間有差距

pillar[i].x = 288 + i * 150;

}

loadResource();

while (1)

{

putimage(0, 0, &background);

drawBird(flyBird.x, flyBird.y);

flyBird.y += 10;

for (int i = 0; i < 3; i++)

{

pillar[i].x -= 10;

if (pillar[i].x < (-52 - 150))

{

initPillar(pillar, i);

}

}

for (int i = 0; i < 3; i++)

{

drawPillar(pillar[i]);

}

//一定要先判斷按鍵是否按下

if (_kbhit())

{

keyDown();

}

if (hitFloor())

{

actionGameOver();

break;

}

Sleep(50);

}

closegraph();

return 0;

}

IMAGE background;

IMAGE myBird[2]; //鳥有兩張 myBird[0] myBird[1]

IMAGE overImg[2];

IMAGE down[2];

IMAGE up[2];

//鳥的屬性

struct 鳥

{

int x;

int y;

int speed; //上跳速度

};

struct 鳥 flyBird = { 124, 0, 100 };

struct 柱子

{

int x; //上面柱子的起始坐標(biāo)

int y;

int h; //上面柱子顯示的高度

};

//加載資源

void loadResource()

{

loadimage(&background, "background.bmp");

loadimage(&myBird[0], "birdy.bmp", 48, 48);

loadimage(&myBird[1], "bird.bmp", 48, 48);

loadimage(&overImg[0], "endy.bmp");

loadimage(&overImg[1], "end.bmp");

loadimage(&down[0], "downy.bmp");

loadimage(&down[1], "down.bmp");

loadimage(&up[0], "upy.bmp");

loadimage(&up[1], "up.bmp");

}

//畫鳥--->透明貼圖技術(shù)

void drawBird(int x, int y)

{

//SRCAND方式貼掩碼圖

putimage(x, y, &myBird[0], SRCAND);

//SRCPAINT 方式貼背景圖

putimage(x, y, &myBird[1], SRCPAINT);

}

//多線程

DWORD WINAPI playMusic(LPVOID lpParamer)

{

mciSendString("open jump.mp3", 0, 0, 0);

mciSendString("play jump.mp3 wait", 0, 0, 0);

mciSendString("close jump.mp3", 0, 0, 0);

return 0;

}

//應(yīng)用技術(shù)-->所有編程行業(yè)通用

//沒有學(xué)的同學(xué),想辦法去拓展一下

//并發(fā)編程,網(wǎng)絡(luò)編程,數(shù)據(jù)庫(kù)編程

//鳥的按鍵處理

void keyDown()

{

/*

mciSendString("指令",0,0,0);

指令:

open:打開

play:播放

pause:暫停

wait:等待

stop:停止

close:關(guān)閉

*/

char userKey = _getch(); //_getch();

switch (userKey)

{

case ' ':

flyBird.y -= flyBird.speed;

CreateThread(NULL, NULL, playMusic, NULL, NULL, NULL);

break;

default:

break;

}

}

int? hitFloor()

{

if (flyBird.y <= 0 || flyBird.y >= (608 - 96))

return 1;

return 0;

}

void actionGameOver()

{

//結(jié)束圖片初始位置

int? x = 50;

int y = 608;

while (y >= 240)

{

putimage(0, 0, &background);

putimage(x, y, &overImg[0], SRCAND);

putimage(x, y, &overImg[1], SRCPAINT);

y -= 50;

Sleep(50);

}

Sleep(5000);

}

void? initPillar(struct 柱子 pillar[], int i)

{

pillar[i].h = rand() % 100 + 160; //[160,259];

pillar[i].x = 288;

pillar[i].y = 0;

}

void drawPillar(struct 柱子 pillar)

{

//上面的柱子

putimage(pillar.x, 0, 52, pillar.h, &down[0], 0, 320 - pillar.h, SRCAND);

putimage(pillar.x, 0, 52, pillar.h, &down[1], 0, 320 - pillar.h, SRCPAINT);

//下面那根柱子

putimage(pillar.x, 512 - (320 - pillar.h), 52, 320 - pillar.h, &up[0], 0, 0, SRCAND);

putimage(pillar.x, 512 - (320 - pillar.h), 52, 320 - pillar.h, &up[1], 0, 0, SRCPAINT);

}

//小作業(yè):

//碰上面柱子的求解

//碰下面柱子的柱子

最后呢,筆者將剩下了這兩部分源碼給去掉了,目的想必大家也知道,可不要直接照著源碼敲,而不自己去理解哦!你們應(yīng)該學(xué)著自己去理解這個(gè)小游戲,然后呢,自己寫出剩下的部分哦!希望我們能夠在學(xué)習(xí)C語(yǔ)言C++的路上越走越遠(yuǎn),共勉!

學(xué)習(xí)C/C++編程知識(shí),提升C/C++編程能力,歡迎關(guān)注UP一起來(lái)成長(zhǎng)!
另外,UP在主頁(yè)上傳了一些學(xué)習(xí)C/C++編程的視頻教程(含C語(yǔ)言全套視頻以及本文章教學(xué)視頻),有興趣或者正在學(xué)習(xí)的小伙伴一定要去看一看哦!會(huì)對(duì)你有幫助的~

C/C++編程筆記:飛翔的小鳥(Flappy Bird)——C語(yǔ)言版本的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
桂平市| 枞阳县| 龙井市| 射阳县| 洛浦县| 垫江县| 营口市| 富源县| 南和县| 蚌埠市| 绥江县| 宝清县| 东方市| 安吉县| 东宁县| 正宁县| 合川市| 伊吾县| 开江县| 娄烦县| 青海省| 鄂托克前旗| 山西省| 讷河市| 平顺县| 南雄市| 沐川县| 阳高县| 固安县| 南康市| 汕尾市| 古浪县| 秦皇岛市| 如皋市| 大姚县| 肥城市| 前郭尔| 鄄城县| 开阳县| 大荔县| 娱乐|