學了兩個C語言課程,想練練手?,可是遇到了一些問題?,主要是printGameArea()函數,for循環后在GameAreaController()函數中賦值的坐標為[2][14]的方塊沒有正確放置?,其他正常,大家幫幫忙。?注:MakeShell(),MakeHit()還沒寫完?上代碼:#include?<stdio.h>
#include?<stdlib.h>
#include?<time.h>
#define?reduction()?printf("\033[0m");??//還原輸出屬性
char?GameArea[8][16];//將游戲面板網格化定義為二維數組
void?printGameArea();
//輸出面板
void?GameAreaController();
//面板控制器,負責刷新面板
void?sleep();
//中斷若干秒,用于炮彈和敵方方塊的移動間隔時間
void?PlayerMove(int?direct,int?step,int?x,int?y);
//移動玩家的位置
void?MakeShell(int?x,int?v);
//生成炮彈
void?MakeHit(int?x,int?v);
//生成敵方方塊
extern?void?run()
//運行函數,主調用
{
????????GameAreaController();
????????printGameArea();
????????//sleep(3);
????????//PlayerMove(1,3,0,15);
????????//PlayerMove(1,3,1,15);
????????//PlayerMove(1,3,2,15);
????????//PlayerMove(1,3,1,14);
????????//printGameArea();
}
void?printGameArea()
{
/*原理:
*判斷某位置的方塊的屬性進行顏色的分配
*說明:函數執行后光標在面板下一行的開頭
*/
????????int?i,j;
????????for(j=0;j<16;j++)
????????{
????????????????for(i=0;i<8;i++)
????????????????{
????????????????????????if(GameArea[i][j]=='%')
????????????????????????{
????????????????????????????????printf("\033[44m%c",GameArea[i][j]);????//玩家:藍色背景色
????????????????????????????????reduction();
????????????????????????}
????????????????????????else?if(GameArea[i][j]=='+')
????????????????????????{
????????????????????????????????printf("\033[33m%c",GameArea[i][j]);????//炮彈:黃色字體色
????????????????????????????????reduction();
????????????????????????}
????????????????????????else?if(GameArea[i][j]==':')
????????????????????????{
????????????????????????????????printf("\033[41m%c",GameArea[i][j]);????//敵對方塊:紅色背景色
????????????????????????????????reduction();
????????????????????????}
????????????????????????else
????????????????????????{
????????????????????????????????printf("%c",GameArea[i][j]);????//空格:無
????????????????????????????????reduction();
????????????????????????}
????????????????}
????????????????printf("\n");
????????}
}
void?GameAreaController()
{
????????GameArea[0][15]=GameArea[1][15]=GameArea[2][15]=GameArea[2][14]='%';
????????//初始化玩家操作區
}
void?sleep(int?sec)
{
????????time_t?t_0;
????????t_0=time(NULL);
????????while(1)
????????{
????????????????time_t?t_n;
????????????????t_n=time(NULL);
????????????????if(t_n-t_0>sec)
????????????????????????break;
????????}
}
void?PlayerMove(int?direct,int?step,int?x,int?y)
{
????????if(direct==1)
????????{
????????????????/*
????????????????*如果這樣寫會報錯:
????????????????GameArea[x+step][y]=GameArea[x][y];
????????????????GameArea[x][y]='?';
????????????????*/
????????????????int?tmp=GameArea[x][y];
????????????????GameArea[x+step][y]=tmp;
????????????????GameArea[x][y]='?';
????????}
????????else?if(direct==0)
????????{
????????????????int?tmp=GameArea[x][y];
????????????????GameArea[x-step][y]=tmp;
????????????????GameArea[x][y]='?';
????????}
}
void?MakeShell(int?x,int?v)
{
}
void?MakeHit(int?x,int?y)
{
}
- 0 回答
- 0 關注
- 701 瀏覽
添加回答
舉報
0/150
提交
取消