资源简介
学习了Linux的终端控制之后编写的一个小游戏,使用WASD这几个键来控制坦克在终端下移动,按j键开炮,目前一次只能有一个炮弹飞出,按e键退出。非Linux用户请勿下载,该程序只能运行在Linux终端下(也许Unix也可以)。
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#define HEIGHT 30//地图高度
#define WIDE 100//地图宽度
enum direction {UP LEFT RIGHT DOWN};//坦克的朝向
struct spot {
int i j;//子弹坐标
int fly;//子弹是否在飞行
enum direction dir;//飞行方向
};
void tank(int i int j enum direction dir);//绘制坦克
void era(int i int j enum direction dir);//擦除原图像
void fire(struct spot *bullet int i int j enum direction dir);//开炮
int moveable(int i int j int height int wide);//测试是否可以移动
int fireable(struct spot *bullet);//测试是否能继续开炮
void fly(struct spot *bullet);//绘制子弹
char *cursor *clean;
int main(void)
{
char choice = ‘a‘;
int row col;
enum direction dir = LEFT;
struct termios initial_term new_term;
struct spot bullet = {0 0 0 LEFT};
int hit = 0 con = 1;
//配置输入模式
tcgetattr(fileno(stdin) &initial_term);
new_term = initial_term;
new_term.c_lflag &= ~ICANON;//非标准输入模式
new_term.c_lflag &= ~ECHO;//取消回显
new_term.c_cc[VMIN] = 0;//没有读入字符也可以返回
new_term.c_cc[VTIME] = 1;//等待时间0.1秒
tcsetattr(fileno(stdin) TCSANOW &new_term);
//匹配终端信息,获取功能字符串
setupterm(NULL fileno(stdout) (int *)0);
cursor = tigetstr(“cup“);
clean = tigetstr(“clear“);
col = row = 2;
putp(tparm(cursor 0 0));
putp(clean);
tank(row col dir);
while(con) {
if(scanf(“%c“ &choice) == 1) {//此处由于输入模式的设置,不会堵塞
switch(choice) {
case ‘w‘: if(moveable(row-1 col HEIGHT WIDE)) {
row--;
dir = UP;
}
else putchar(‘\a‘);;
break;
case ‘s‘: if(moveable(row+1 col HEIGHT WIDE)) {
row++;
dir = DOWN;
}
else putchar(‘\a‘);
break;
case ‘a‘: if(moveable(row col-1 HEIGHT WIDE)) {
col--;
dir = LEFT;
}
else putchar(‘\a‘);
break;
case ‘d‘: if(moveable(row col+1 HEIGHT WIDE)) {
col++;
dir = RIGHT;
}
else putchar(‘\a‘);
break;
case ‘j‘: if(fireable(&bullet)) fire(&bullet row col dir);
break;
case ‘e‘: con = 0;
break;
}
era(row col dir);
tank(row col dir);
}
fly(&bullet);
}
printf(“Bye Bye!\n“);
sleep(2);
putp(tparm(cursor
- 上一篇:C++获取所有局域网可用IPping
- 下一篇:纯C语言写的hex转bin小工具
相关资源
- MFC坦克大战
- 坦克大战 C++
- c++做的坦克大战源码
- MFC与坦克大战代码
- 坦克大战90源程序代码 精确到象素级
- c++坦克大战源码_写的不错
- C++&easyx;的坦克大战
- VC++坦克大战多人在线大型网络游戏
- 北邮C++小学期坦克大战代码及报告
- 对战坦克大战源代码(vc++)
- OpenGL开发的二维坦克大战游戏,小时
- VS2012工程坦克大战
- c++坦克大战
- VC++6.0 分布式坦克大战游戏 源码
- 我用VS2010 C++和windows API制作的坦克大
- C++程序坦克大战MFC
- 坦克大战完整源代码
- 坦克大战C语言easyx图形插件源代码
- 这是我在VC6.0下设计的一个坦克大战的
- C++控制台版坦克大战源码.rar
- VS平台下的MFC版坦克大战
- 坦克大战 c++ 源代码
- C++多人2D坦克大战源码.rar
- C++(qt)游戏实战项目:坦克大战(源
- 坦克大战C++编程坦克大战C++编程
- 坦克大战:(MFC]).zip
- 使用C++编写超经典的坦克大战
- MFC 实现的坦克大战
- 坦克大战游戏源代码C++源代码
- 用MFC写的坦克大战
评论
共有 条评论