首页 > 代码库 > Linux ncurses编写 FlapyBird 第一步

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 1void 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 第一步