轻松玩Linux,从写个2048玩玩开始,不多说,有注解有代码,就差你了,快上车!
1.简介:Linux上的2048;写个2048代码还能玩到2048,那你就是写得了代码,玩得了2048的2048程序员了。
2.准备:电脑有Linux系统就可以了,gcc,编辑器任意;
3.原理:主要是对一个4*4的数组的操作处理,还需要用到字符的输出显示,键盘输入的获取;
4.展示一下:
5.动手:
a.显示内容:
a1.打开屏幕,关闭屏幕
void open_screen(void)
{
initscr(); //初始化字符屏幕
cbreak(); //Ctrl + c
noecho(); //不用回显
keypad(stdscr, TRUE); //使用功能键
}
void close_screen(void)
{
endwin(); //关闭字符窗口
}
a2.初始化一个放数组的窗口:
WINDOW *w_2048=NULL;
void init_window()
{
w_2048 = newwin(4, 24, w_2048_y0, w_2048_x0);
}
a3.在刚刚的窗口内显示内容:
void init_window_h(void)
{
w_2048 = newwin(2, 24, 4, 40);
//指定位置显示字符
wmove(w_2048, 0,5 );
waddstr(w_2048,"hello 2048!");
wmove(w_2048, 1,3 );
waddstr(w_2048,"designed by lin");
wrefresh(w_2048);
}
b.获取键盘输入:
#define LEFT 1
#define RIGHT 2
#define UP 3
#define DOWN 4
#define QUIT 10
int get_user_input()
{
keypad(w_2048,true);//打开功能键(方向键等)
int ch=wgetch(w_2048);
keypad(w_2048,false);//功取消能键
if(ch=='Q'||ch=='q')
return QUIT;
if(ch=='W'||ch=='w'||ch==KEY_UP)
return UP;
if(ch=='S'||ch=='s'||ch==KEY_DOWN)
return DOWN;
if(ch=='A'||ch=='a'||ch==KEY_LEFT)
return LEFT;
if(ch=='D'||ch=='d'||ch==KEY_RIGHT)
return RIGHT;
}
c.数组处理:
随机数随机填充:
#define N 4
int matrix_2048[N][N]={
0,0,0,0,
0,0,0,0,
0,0,0,0,
0,0,0,0
};
void fill_a_number(void)
{
srandom(time(NULL));//设置随机数种子
//long int random();
int k=random();
k=k%4;
int p=random();
p=p%4;
for(int i=0;i<4;i++) //获取是否还有0
for(int j=0;j<4;j++)
if(matrix_2048[i][j]==0)
num++;
if(num==0)
return;
while(matrix_2048[k][p]!=0)
{
k=rando