xxxx18一60岁hd中国/日韩女同互慰一区二区/西西人体扒开双腿无遮挡/日韩欧美黄色一级片 - 色护士精品影院www

  • 大小: 4KB
    文件類型: .c
    金幣: 1
    下載: 1 次
    發(fā)布日期: 2021-06-07
  • 語(yǔ)言: C/C++
  • 標(biāo)簽: 坦克大戰(zhàn)??

資源簡(jiǎn)介

學(xué)習(xí)了Linux的終端控制之后編寫(xiě)的一個(gè)小游戲,使用WASD這幾個(gè)鍵來(lái)控制坦克在終端下移動(dòng),按j鍵開(kāi)炮,目前一次只能有一個(gè)炮彈飛出,按e鍵退出。非Linux用戶請(qǐng)勿下載,該程序只能運(yùn)行在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;//子彈坐標(biāo)
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);//開(kāi)炮
int?moveable(int?i?int?j?int?height?int?wide);//測(cè)試是否可以移動(dòng)
int?fireable(struct?spot?*bullet);//測(cè)試是否能繼續(xù)開(kāi)炮
void?fly(struct?spot?*bullet);//繪制子彈

char?*cursor?*clean;

int?main(void)
{
char?choice?=?‘a(chǎn)‘;
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;//非標(biāo)準(zhǔn)輸入模式
new_term.c_lflag?&=?~ECHO;//取消回顯
new_term.c_cc[VMIN]?=?0;//沒(méi)有讀入字符也可以返回
new_term.c_cc[VTIME]?=?1;//等待時(shí)間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)?{//此處由于輸入模式的設(shè)置,不會(huì)堵塞
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(chǎn)‘: 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?

評(píng)論

共有 條評(píng)論