游戏:Flappy Bird[飞行的鸟](C++)1.2

前言:

最近快学习压力有点大,所以很少有时间来写游戏,游戏可能有BUG,还请多多包含!!

这次更新主要是针对一下几点:

1.加了O2优化,让游戏更流畅;

2.更改了计分规则,修复了分数累加的BUG;

3.设置难度选项(手残党狂喜)

奉上代码:

#include<iostream>
#include<stdio.h>
#include<ctime>
#include<windows.h>
#include<conio.h>
#include<cstdlib>
#include<fstream>
#include<iomanip>
#pragma GCC optimize(2)
using namespace std;
int l=-1,r=30;
int x=3,y=5;
int fenshu=0;
int nandu;
int map[89][96]= {
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,8,1,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,0,1,0,1,1,1,1,0,0,1,8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,8,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,9,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,7,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,0,0,8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,1,1,1,1,1,0,6,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,1,0,0,0,0,0,1,1,1,1,8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,0,8,0,0,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,1,0,1,0,0,1,1,1,1,1,8,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,1,1,1,1,0,1,1,1,1,1,8,
	1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,8,
};
void home();
void win() {
	cout<<"你赢了!!!\n";
	system("pause");
	system("cls");
	cout<<"你的分数:\n"<<fenshu;
	system("pause");
	system("cls");
	fenshu=0;
	home();
}
void Nandu() {
	int n;
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"选择难度\n";
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"1.简单游戏\n";
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"2.困难游戏\n";
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"3.地狱游戏(你确定?)"<<"\n";
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"请输入:";
	cin>>n;
	nandu=50*(4-n);
	system("cls");
}
void jiaocheng() {
	cout<<"玩法:长按空格键控制小鸟向上飞(别让小鸟撞到树枝)\n";
	system("pause");
	system("cls");
	home();
}
void over() {
	cout<<"你死了\n";
	system("pause");
	system("cls");
	cout<<"你的分数:\n"<<fenshu;
	system("pause");
	system("cls");
	fenshu=0;
	home();
}
void draw(int a) {
	if(a==0) {
		printf("  ");
	}
	if(a==5) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_INTENSITY);
		printf("鸟");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
	}
	if(a==1) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_GREEN|FOREGROUND_INTENSITY);
		printf("树");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
	}
	if(a==8) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_RED|FOREGROUND_INTENSITY);
		printf("赢");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
	}
	if(a==9) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
		printf("终");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
	}
	if(a==7) {
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
		printf("点");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
	}
	if(a==6) {

		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY|FOREGROUND_RED|FOREGROUND_GREEN|FOREGROUND_BLUE);
		printf("线");
		SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),FOREGROUND_INTENSITY);
	}
}
void xianshi(int l,int r) {
	while(r<=96) {
		map[x][y]=5;
		if(r<=56)
			l++,r++;
		for(int i=0; i<=8; i++) {
			for(int j=l; j<=r; j++) {
				draw(map[i][j]);
			}
			if(i!=8)
				printf("\n");
		}
		Sleep(nandu);
		map[x][y]=0;
		y++;
		x++;
		if (GetKeyState(' ')<0) {
			x-=1;
		}
		if (GetKeyState(' ')<0) {
			x-=1;
		}
		system("cls");
		if(map[x][y]==1) {
			over();
			return ;
		}
		fenshu++;
		if(map[x][y]==8||map[x][y]==9||map[x][y]==7||map[x][y]==6) {
			win();
			return ;
		}
	}
}
void home() {
	int n;
	int l=-1,r=30;
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"1.开始游戏\n";
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"2.退出游戏\n";
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"3.游戏教程\n";
	for(int i=1; i<=25; i++)
		cout<<" ";
	cout<<"请输入:";
	cin>>n;
	system("cls");
	if(n==1) {
		Nandu();
		x=3,y=5;
		xianshi(-1,30);
	}
	if(n==2)
		return ;
	if(n==3)
		jiaocheng();
}
int main() {
	system("mode con cols=65 lines=10");
	home();
}

Oh,最后,千万别忘了—— 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值