linux下俄罗斯方块

在编译的时候:线程版需要连接 curses库 和pthread库 ;进程版只要连接curses库即可

由于这个代码是本人第一次编写的,有些地方可能写法不规范,注释不明了,仅限参考。

1、进程版

#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <curses.h>
#include <time.h>

#define BUFSIZE 1024
#define TYPE 100
#define FLAG 99

typedef struct{
	long mtype;
	char mtext[BUFSIZE];
}msgbuf_t;
int a=-1,b=-1;
int an,bn;
int score = 0;
int scra[28][18]={0};  // show data
int scrb[28][18]={     // result data
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
	0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
	0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};

int model[7][4][4][4]={
	{ // model formate 0
		{ // direct 0
			0,0,0,0,
			0,0,0,0,
			1,0,0,0,
			1,1,1,0
		},
		{ // direct 1
			0,0,0,0,
			1,1,0,0,
			1,0,0,0,
			1,0,0,0
		},
		{ // derect 2
			0,0,0,0,
			0,0,0,0,
			1,1,1,0,
			0,0,1,0
		},
		{ // direct 3
			0,0,0,0,
			0,1,0,0,
			0,1,0,0,
			1,1,0,0
		}
	},
	{	// model formate 1 
		{ // direct 0
			0,0,0,0,
			0,0,0,0,
			0,0,1,0,
			1,1,1,0
		},
		{ // direct 1
			0,0,0,0,
			1,0,0,0,
			1,0,0,0,
			1,1,0,0
		},
		{ // direct 2
			0,0,0,0,
			0,0,0,0,
			1,1,1,0,
			1,0,0,0
		},
		{ // direct 3
			0,0,0,0,
			1,1,0,0,
			0,1,0,0,
			0,1,0,0
		}
	},
	{ // model formate 2
		{ // direct 0
			0,0,0,0,
			0,0,0,0,
			1,1,0,0,
			0,1,1,0
		},
		{ // direct 1
			0,0,0,0,
			0,1,0,0,
			1,1,0,0,
			1,0,0,0
		},
		{ // direct 2
			0,0,0,0,
			0,0,0,0,
			1,1,0,0,
			0,1,1,0
		},
		{ // direct 3
			0,0,0,0,
			0,1,0,0,
			1,1,0,0,
			1,0,0,0
		}
	},
	{ // model formate 3
		{ // direct 0
			0,0,0,0,
			0,0,0,0,
			0,1,1,0,
			1,1,0,0
		},
		{ // direct 1
			0,0,0,0,
			1,0,0,0,
			1,1,0,0,
			0,1,0,0
		},
		{ // direct 2
			0,0,0,0,
			0,0,0,0,
			0,1,1,0,
			1,1,0,0
		},
		{ // direct 3
			0,0,0,0,
			1,0,0,0,
			1,1,0,0,
			0,1,0,0
		}
	},
	{ // model formate 4
		{ // direct 0
			0,0,0,0,
			0,0,0,0,
			1,1,0,0,
			1,1,0,0
		},
		{ // direct 1
			0,0,0,0,
			0,0,0,0,
			1,1,0,0,
			1,1,0,0
		},
		{ // direct 2
			0,0,0,0,
			0,0,0,0,
			1,1,0,0,
			1,1,0,0
		},
		{ // direct 3
			0,0,0,0,
			0,0,0,0,
			1,1,0,0,
			1,1,0,0
		}
	},
	{ // model formate 5
		{ // direct 0
			0,0,0,0,
			0,0,0,0,
			0,1,0,0,
			1,1,1,0
		},  
		{ // direct 1
			0,0,0,0,
			1,0,0,0,
			1,1,0,0,
			1,0,0,0
		},  
		{ // direct 2
			0,0,0,0,
			0,0,0,0,
			1,1,1,0,
			0,1,0,0
		},  
		{ // direct 3
			0,0,0,0,
			0,1,0,0,
			1,1,0,0,
			0,1,0,0
		}   
	},
	{ // model formate 6
		{ // direct 0
			0,0,0,0,
			0,0,0,0,
			0,0,0,0,
			1,1,1,1
		},
		{ // direct 1
			1,0,0,0,
			1,0,0,0,
			1,0,0,0,
			1,0,0,0
		},
		{ // direct 2
			0,0,0,0,
			0,0,0,0,
			0,0,0,0,
			1,1,1,1
		},
		{ // direct 3
			1,0,0,0,
			1,0,0,0,
			1,0,0,0,
			1,0,0,0
		}
	}
};

/*----------------------------
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值