首页 > 代码库 > 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 第一步
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。