C语言小游戏-简单仿flayBird游戏

首先需要先画出一直小鸟,而且自由下落。并且输入键盘“空格”,则小鸟会上飞。

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>

//设置全局变量
int high,width;  //画布
int bird_x,bird_y;  //小鸟定位

int barrier_x_Top;  //障碍物的上部分长度
int barrier_x_Down;  //障碍物的下部分长度=上部分+缺口。
int barrier_y;  //障碍物从右至左的距离。

//清屏
void clearScreen(int x, int y)
{
	HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
	COORD pos;
	pos.X=x;
	pos.Y=y;
	SetConsoleCursorPosition(handle,pos);
}

//隐藏光标
void HideConsor()
{
	CONSOLE_CURSOR_INFO cursor_info = {1,0}; //第二个值为0,隐藏光标
	SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}

void init()
{
	high =40;
	width =45;
	bird_x =high/2;
	bird_y =width/3;

	//障碍物初始化
	barrier_y =width/2;
	barrier_x_Top = high/4;
	barrier_x_Down = high*2/4;

	HideConsor();
}

void show()
{
	//清屏
	clearScreen(0,0);
	int i,j;
	for(i = 0;i<=high;i++)
	{
		for(j = 0;j<=width;j++)
		{
			if((i == bird_x) && (j==bird_y))
				printf("@"); // 刻画小鸟
			//else if((barrier_y == i) && ((barrier_x_Top ==j) || (barrier_x_Down ==j)))
			//	printf("#");  //障碍物
			else if(i == high)
				printf("-");
			else if(j == width)
				printf("|");
			else
				printf(" ");

		}
		printf("\n");
	}
}

void userInput()
{
	char userInput;
	if(kbhit())
	{
		userInput = getch();
		if(userInput == ' ')
			bird_x = bird_x -2;
	}
}

void gameController()
{
	//小鸟自由下落
	bird_x++;
}

//主函数rukou
int main()
{
	init();  //初始化
	
	while(1)
	{
		show();  //展示
		userInput();  //用户控制
		gameController();  //游戏控制和规则限制
	}
}

第二步,画出障碍物。。让障碍物动起来

 

#include <stdio.h>
#include <stdlib.h>
#include <windows.h>
#include <conio.h>

//设置全局变量
int high,width;  //画布
int bird_x,bird_y;  //小鸟定位

int barrier_x_Top;  //障碍物的上部分长度
int barrier_x_Down;  //障碍物的下部分长度=上部分+缺口。
int barrier_y;  //障碍物从右至左的距离。

int score;  //得分

//清屏
void clearScreen(int x, int y)
{
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    COORD pos;
    pos.X=x;
    pos.Y=y;
    SetConsoleCursorPosition(handle,pos);
}

//隐藏光标
void HideConsor()
{
    CONSOLE_CURSOR_INFO cursor_info = {1,0}; //第二个值为0,隐藏光标
    SetConsoleCursorInfo(GetStdHandle(STD_OUTPUT_HANDLE),&cursor_info);
}

void init()
{
    high =40;
    width =45;
    bird_x =high/2;
    bird_y =width/3;

    //障碍物初始化
    barrier_y =width ;
    barrier_x_Top = high/4;
    barrier_x_Down = high/2;

    //得分
    score = 0;

    HideConsor();
}

void show()
{
    //清屏
    clearScreen(0,0);
    int i,j;
    for(i = 0;i<=high;i++)
    {
        for(j = 0;j<=width;j++)
        {
            if((i == bird_x) && (j==bird_y))
                printf("@"); // 刻画小鸟
            else if((barrier_y == j) && ((barrier_x_Top >=i) || (barrier_x_Down <=i)))
                printf("#");  //障碍物
            else if(i == high)
                printf("-");
            else if(j == width)
                printf("|");
            else
                printf(" ");

        }
        printf("\n");
    }
    printf("得分:%d \n",score);
}

void userInput()
{
    char userInput;
    if(kbhit())
    {
        userInput = getch();
        if(userInput == ' ')
            bird_x = bird_x -2;
    }
}

void gameController()
{

    //累计加分
    if(bird_y == barrier_y)
    {
        if((bird_x >=barrier_x_Top) && (bird_x <=barrier_x_Down))
            score++;
        else
        {
            printf("GAME OVER!!!");
            exit(0);
        }
    }

    //小鸟自由下落
    bird_x++;

    //障碍物动起来
    if(barrier_y>0)
        barrier_y--;
    else
    {
        barrier_y=width;
        int randPos=rand()%(high-5);
        barrier_x_Top =randPos;
        barrier_x_Down = randPos + high/4;
    }
        
}

//主函数rukou
int main()
{
    init();  //初始化
    
    while(1)
    {
        show();  //展示
        userInput();  //用户控制
        gameController();  //游戏控制和规则限制
    }
}

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值