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;

    }

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

时间: 2024-10-12 19:30:49

Linux ncurses编写 FlapyBird 第一步的相关文章

Linux下的第一步——进度条(gcc&Makefile)

相信大家在初步学习C/C++的时候都写过"hello world"的代码.在学习了C/C++之后进入Linux系统的学习我们不用再从"hello world"这种入门级程序开始了,毕竟已经有了几年的小经验,但是重新开始在一个新的系统下编写代码,特别是对于Linux中庞杂的指令是需要一个熟悉与练习的过程的.进度条的小程序对于我们熟悉指令,练习VIM下代码的编辑以及gcc和Makefile等工具的使用都是很有帮助的. VIM之前已经介绍过了,就不做过多赘述,今天利用这个

linux内核设计的艺术--系统启动第一步

计算机究竟是如何执行起来的呢,在我学习计算机的时候一直不是非常明确,可是近期借了本<linux内核设计的艺术>算是知道了计算机从按开机到启动操作系统之间究竟做了些什么. 这本书刚開始介绍的并非linux的启动,而是linux启动之前的一步,也就是在你按下了开机button之后进入系统引导之前计算机做的事情,这个时候做的事情是每台执行操作系统的计算机都须要做的.大致的步骤也差点儿相同,OK,进入正题. 事实上在当我们按了开机键的时候,硬件电路将CPU的CS设置成0XF000,IP设置成0XFFF

Linux——搭建PHP开发环境第一步:mysql

原文链接:http://www.jb51.net/article/83647.htm 1.第一步就是看linu是否安装了mysql,经过rpm -qa|grep mysql查看到centos下安装了mysql5.1,那就开始卸载咯 2.接下来就是卸载mysql5.1了,命令:rpm -e mysql-libs --nodeps 3.yum中之后mysql5.1,安装还是5.1,现在就要去增加一个新的repo rpm -Uvh http://mirror.steadfast.net/epel/6/

在ubuntu linux 中编写一个自己的python脚本

在ubuntu linux 中编写一个自己的简单的bash脚本. 实现功能:终端中输入简单的命令(以pmpy为例(play music python),为了区别之前说的bash脚本添加了py后缀),来实现音乐的播放.注:本人ununut中安装了audacious,所以就以audacious为例,来实现音乐的播放. 第一步:进入一个目录,最好是自己特别选定的,如果用文件浏览器可以新建一个名为pmpy空白文档文件:如果是用终端可以输入命令:vi pmpy(可能会因为位置问题,需要添加sudo) 第二

第三 章、面向对象 第一步部分

一.类与对象的基本概念 类:抽象的概念集合,表示的是一个共性的产物,类之中定义的是属性和行为(方法): 对象:是一种个性的表示,表示一个独立的个体,每个对象拥有自己独立的属性,依靠属性区分不同的对象. 类与对象的区别:类是对象的模板,对象是类的实例,类只有通过对象才可以使用,开发中应该先产生类,再产生对象.类不能直接使用,方法可以直接使用. 二.类与对象的定义 1.类的定义: 在JAVA中定义类,可以使用class关键字完成, 语法为: 1 class 类名称{ 2 属性(变量): 3 行为(方

Linux内核模块编写详解

内核编程常常看起来像是黑魔法,而在亚瑟 C 克拉克的眼中,它八成就是了.Linux内核和它的用户空间是大不相同的:抛开漫不经心,你必须小心翼翼,因为你编程中的一个bug就会影响到整个系统,本文给大家介绍linux内核模块编写,需要的朋友可以参考下 内核编程常常看起来像是黑魔法,而在亚瑟 C 克拉克的眼中,它八成就是了.Linux内核和它的用户空间是大不相同的:抛开漫不经心,你必须小心翼翼,因为你编程中的一个bug就会影响到整个系统.浮点运算做起来可不容易,堆栈固定而狭小,而你写的代码总是异步的,

核心思想:用技术创造价值的第一步:定义价值点,也就是找到杠杆的支点(陈天桥是典范)

杠杆 技术本就是一种杠杆. 曾经,技术的草莽时期,是一个英雄辈出的年代.两个人可以创造 Unix,C 语言,一个人也可以发明 Linux,也可以写出 Foxmail.掌握了技术,就可能创造历史,那时技术的杠杆很高. 如今,是技术的成熟时期,个体英雄少了,更多是一种团队和集团军作战的时代.如果你是技术的绝世高手(精的极致),那你需要找到一支契合你技能的场景与队伍,加入进去.此时个人的技术杠杆也许不像曾经那么高 —— 能创造历史,但也许你们这个队伍还是有机会能创造历史. 前几年,Facebook 曾

Git 系列——第一步安装 Git

之前也没有用过什么版本控制的工具,唯一用过的就是 SVN 了,不过也只是简单的使用而已,比如写好代码就签入,没了?是的,没了. 于是接触到了 Git 这个分布式版本控制软件,接下来就让我们好好学习,天天向上吧. 第一步当然需要安装 Git 了,其实这一步本来没什么可说的,毕竟程序员哪有不会装软件的...说的也是.不过还是打算一步一步来. 由于我使用的是 Windows 操作系统,所以我下载的是 Windows 版,下载 Windows 版 Git.其他操作系统的如:Linux.Mac,可以参考这

Linux 脚本编写基础

1. Linux 脚本编写基础1.1 语法基本介绍1.1.1 开头程序必须以下面的行开始(必须放在文件的第一行):#!/bin/sh 符号#!用来告诉系统它后面的参数是用来执行该文件的程序.在这个例子中我们使用/bin/sh来执行程序. 当编辑好脚本时,如果要执行该脚本,还必须使其可执行. 要使脚本可执行:编译 chmod +x filename 这样才能用./filename 来运行1.1.2 注释 在进行shell编程时,以#开头的句子表示注释,直到这一行的结束.我们真诚地建议您在程序中使用