IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> C++知识库 -> 飞翔的小鸟(C语言) -> 正文阅读

[C++知识库]飞翔的小鸟(C语言)

#include<stdio.h>
#include<conio.h>
#include<graphics.h>
#include<mmsystem.h>
#include<stdlib.h>
#include<time.h>
#pragma comment(lib,"winmm.lib")
void GameDraw();
void BirdMove();
DWORD WINAPI MusicPlay(LPVOID lpparamer);//DWORD 无符号长整型 
int HitFloor();
int HitPilliar(int i);
void InitPilliar();
void LoadPilliar(int i);
void PilliarMove();
IMAGE bkground;
IMAGE bird[2];
IMAGE uppilliar[2];
IMAGE downpilliar[2];
IMAGE end[2];
struct bird
{
	int x;
	int y;
	int speed;
	int g;
};
struct pilliar
{
	int x;
	int y;
	int height;
};
struct bird flybird = { 144,10,0,10 };
struct pilliar pilliars[3];
void GameDraw()//画图
{   //背景图
	loadimage(&bkground, _T("background.bmp"));
	putimage(0, 0, &bkground);
	//鸟
	loadimage(bird, _T("birdy.bmp"));
	loadimage(bird+1, _T("bird.bmp"));
	putimage(flybird.x,flybird.y , bird , SRCAND);
	putimage(flybird.x, flybird.y, bird+1, SRCPAINT);
	
	loadimage(downpilliar, _T("downy.bmp"));
	loadimage(downpilliar+1, _T("down.bmp"));

	loadimage(uppilliar, _T("upy.bmp"));
	loadimage(uppilliar + 1, _T("up.bmp"));
	for (int i = 0; i < 3; i++)
	{
		LoadPilliar(i);
			
	}
	//游戏结束标志
	loadimage(end, _T("endy.bmp"));
	loadimage(end + 1, _T("end.bmp"));
	for (int i = 0; i < 3; i++)
	{
		if (HitPilliar(i))
			goto again;
	}
	if (HitFloor())
	{  
		again:
		cleardevice();
		int x, y;
		x = 50, y = 240;
		putimage(0, 0, &bkground);
		putimage(x, y, end, SRCAND);
		putimage(x, y, end + 1, SRCPAINT);
		if (_kbhit())
		{  
			
			char ch = _getch();
			if (ch == 27)//按ESC退出
			{
				exit(1);
			}
			if (ch == 32)
			{
				flybird.x = 144;
				flybird.y = 10;
				InitPilliar();
			}


		}
	}


}
void BirdMove()//鸟的移动
{
	flybird.y += flybird.speed;
	flybird.speed += flybird.g;
	if (GetAsyncKeyState(VK_SPACE))
	{
		flybird.speed = -40;
		CreateThread(NULL, NULL, MusicPlay, NULL, NULL, NULL);//多线程,防止画面卡顿
		
	}
}
DWORD WINAPI MusicPlay(LPVOID lpparamer)//播放音乐
{ 
		mciSendString(_T("open jump.mp3 alias jump "), 0, 0, 0);
		mciSendString(_T("play jump wait", ), 0, 0, 0);
		mciSendString(_T("close jump"), 0, 0, 0);
	
	return 0;
}
int HitFloor()
{
	if (flybird.y <= 0 || flybird.y>=512)
		return 1;
	else
	return 0;
}
int HitPilliar(int i)
{
	if (flybird.x >= pilliars[i].x && flybird.x <= pilliars[i].x + 52 && flybird.y >= 512 - (320 - pilliars[i].height))//朝上柱子碰撞判断
		return 1;
	if (flybird.x >= pilliars[i].x && flybird.x <= pilliars[i].x + 52 && flybird.y <= pilliars[i].height)//朝下柱子碰撞判断
		return 1;
	return 0;
}
void InitPilliar()//初始化柱子
{
	for (int i = 0; i < 3; i++)
	{
		pilliars[i].x = 288 + i * 150;
		pilliars[i].height = rand() % 100 + 150;
	}

	    
}
void PilliarMove()
{
	int i;
	for (i = 0; i < 3; i++)
	{
		pilliars[i].x -= 10;
		if (pilliars[i].x <= 20)
		{ 
			pilliars[i].x = 288+150;
			pilliars[i].height = rand() % 100 + 150;
		}
	}
}
void LoadPilliar(int i)
{   //朝下的柱子
	putimage(pilliars[i].x, 0, 52, pilliars[i].height, downpilliar, 0, 320 - pilliars[i].height, SRCAND);
	putimage(pilliars[i].x, 0, 52, pilliars[i].height, downpilliar+1, 0, 320 - pilliars[i].height, SRCPAINT);
	//朝上的柱子
	putimage(pilliars[i].x, 512 - (320 - pilliars[i].height), 52, 320 - pilliars[i].height, uppilliar, 0, 0, SRCAND);
	putimage(pilliars[i].x, 512 - (320 - pilliars[i].height), 52, 320 - pilliars[i].height, uppilliar+1, 0, 0, SRCPAINT);

}
int main()
{
	
	initgraph(288, 608);
	srand((unsigned)time(NULL));
	BeginBatchDraw();
	InitPilliar();
	while (1)
	{
		
		GameDraw();
		BirdMove();
		PilliarMove();
		
		FlushBatchDraw();
		Sleep(100);

	}
	closegraph();
}
  C++知识库 最新文章
【C++】友元、嵌套类、异常、RTTI、类型转换
通讯录的思路与实现(C语言)
C++PrimerPlus 第七章 函数-C++的编程模块(
Problem C: 算法9-9~9-12:平衡二叉树的基本
MSVC C++ UTF-8编程
C++进阶 多态原理
简单string类c++实现
我的年度总结
【C语言】以深厚地基筑伟岸高楼-基础篇(六
c语言常见错误合集
上一篇文章      下一篇文章      查看所有文章
加:2021-08-15 15:19:21  更:2021-08-15 15:21:45 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/26 16:44:20-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码
数据统计