#define TOP
#define TOP 0/*当前屏幕的最上边 */
Linux 下利用 curses 库实现弹球游戏
#include
#include
#include
#define RIGHT COLS-1/*
#define RIGHT COLS-1
/*球所能到达的当前屏幕最大水
平范围 */
#define BOTTOM LINES-1 /*
#define BOTTOM LINES-1 /*
球所能到达的当前屏幕最大垂
直范围 */
#define BOARD_LENGTH10 /*
#define BOARD_LENGTH
10 /*挡板长度 */
#define LEFT 0/*当前屏幕的最左边 */
char BALL= 'O';
char BALL= 'O';/*球的形状 */
char BLANK= ' '; /*覆盖球走过的轨迹 */ int left_board; /* 挡板左侧坐标 */ int right_board; /* 挡板右侧坐标 */
int is_lose=0;int hdir;/* 控制球水平运动的变量 */ int delay=100;
int vdir;/* 控制球垂直运动的变量 */int pos_X;/*
int vdir;
/* 控制球垂直运动的变量 */
int pos_X;
/* 球的横坐标 */
int pos_Y;
/*球的纵坐标 */
void moveBall();
void init();
void control();int main()
//初始化 curses initscr();
crmode(); /* 中断模式 */ noecho(); /* 关闭回显 */ move(6,28);
attron(A_BOLD);
addstr("Welcome to the BallGame!");
move(
move( PAGE #,20);
attroff(A_BOLD);
addstr("Help:");
move(9,23);
addstr("'N':Start a new game.");
move(10,23);
addstr("'Q':Quit game.");
move(11,23);
shift.");addstr("'KEY_LEFT' :Control baffle left move(12,23);
shift.");
addstr("'KEY_RIGHT':Control baffle right shift.");
move(
move( PAGE #,23);
addstr("'KEY_UP' :Control of the ball speed.");
move(14,23);
addstr("'KEY_DOWN' :Control of the ball reducer.");
int flag=1;
char choice;
move(16,24);
addstr("Please choose your choice!(n/q):");
refresh();
choice=getch();
while(flag){
if(choice=='q'||choice=='Q'||choice=='n'||choice=='N')
flag=0;
/* 开始游戏
/* 开始游戏 */
if(choice=='n'||choice=='N'){
clear();
move(10,25);
addstr("BallGame will start! Are you read?");
refresh();
sleep(3);
/* 退出游戏
/* 退出游戏 */
else if(choice=='q'||choice=='Q'){
clear();
move(10,25);
addstr("You quit the game successfully!");
refresh();
sleep(3);
endwin();
endwin(); /* 结束 curses*/
}
}
return 0;
void init(){
int i,j;
clear();
if(start_color()==OK){
/*改变球和挡板的颜色 */
attron(A_BOLD);
/*打开粗体 */
init_pair(1,COLOR_YELLOW,COLOR_BLACK);
attron(COLOR_PAIR(1));
//初始球 pos_X =22; /*球初始的横坐标 */
pos_Y = BOTTOM-1;/*球