Linux ncurses编写 FlapyBird 第一步

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux ncurses编写 FlapyBird 第一步相关的知识,希望对你有一定的参考价值。

/*
 * flapybird.h
 *
 *  Created on: 2016年9月15日
 *      Author: jon
 */

#include <curses.h>
#include <unistd.h>
#include <stdlib.h>
#include <time.h>
#include <malloc.h>
#include <assert.h>
#define LEFT_WALL 1
#define RIGHT_WALL (COLS-2)

int ** screenArray;//虚拟屏幕 用数组渲染 1为墙 0为空
/*
 * flapybird.c
 *
 *  Created on: 2016年9月15日
 *      Author: jon
 */


#include "flapybird.h"
//#define DEBUG 1
void init_tcs(void)
{

    initscr();
    curs_set(0);
    attrset(A_REVERSE);
#ifdef DEBUG
    mvprintw(0,COLS/2 - 25,"height:%d,width:%d",LINES,COLS);//lines y轴 cols x轴 左上为0点
    mvaddch(0,0, );
    refresh();
#endif

    init_virtual_screen();
    refresh();
    sleep(10);
}

void init_virtual_screen(void)
{

        screenArray = (int **)malloc(sizeof(int *)*COLS);
        for(int i = 0 ;i < COLS ;i++)
        {
            screenArray[i] = (int *)malloc(sizeof(int)*LINES);
        }
#ifdef DEBUG
        screenArray[COLS-1][LINES-1]=1;
        assert(screenArray[COLS-1][LINES-1]);
#endif
        srand((unsigned)time(NULL));
        int wall;
        int miniWall;
        int freeSpace;
        miniWall = LINES / 3;

        for(int i = 0 ;i < COLS ;i+=5){//隔开一行就绘制一堵墙
             wall = rand()%5 + miniWall;//上半部分墙
             freeSpace =rand()%8 + 4 ;//绘制自由可通过的空间

            for(int j = 0 ; j < wall;j++){
                screenArray[i][j]=1;//绘制墙的上半部分
            }

            for (int j = freeSpace+wall; j < LINES; j++){////绘制墙的下半部分
                screenArray[i][j]=1;
            }

        }

        //显示墙
        for(int i = 0 ;i < COLS ;i++)
            for(int j = 0 ; j < LINES;j++)
            {
                if (screenArray[i][j] == 1)
                    mvaddch(j,i, );
            }

}
int main(int agrc,char *agrv[])
{
    init_tcs();
    nocbreak();
    return 0;

    }

搞定第一步 根据窗口大小自动 生成静态的墙,下一步是让墙移动起来,游戏开发完成之后再调节自动生成的参数,预计还要重构

技术分享

以上是关于Linux ncurses编写 FlapyBird 第一步的主要内容,如果未能解决你的问题,请参考以下文章

Linux环境下,基于Ncurse图形库贪吃蛇小游戏(上)

Linux环境下,基于Ncurse图形库贪吃蛇小游戏(上)

为 ncurses 游戏编写游戏循环?

NCurses 从 stdin 读取到 std::string,C++

Linux 内核编译 Linux 内核 ③ ( 安装 ncurses | 安装 flex | 安装 bison | 打开 Linux 内核编译配置菜单 )

Linux系统下安装ncurses库