很多修修補補之後,我覺得我明確了我的問題的根源就我的球員不能在球場上適當運動:我的舉動算法不能正常工作
for (t = 1; t <= ROUNDS; t++){
if (t % 10 == 0) {
print_game (field);
}
if (teamsize > 1){
for (m = 0; m < SIZE_TEAM; m++){
if (team [m].presence == 1){
if (team [m].direction == East){
if (team [m].y == 24){
if (field [team [m].x][team [m].y - 1] != 0){
rem (field [team [m].x][team [m].y - 1], teamsize);
field [team [m].x][team [m].y - 1] = team [m].id;
teamsize--;
}
else {
field [team [m].x][team [m].y - 1] = team [m].id;
}
}
if (field [team [m].x][team [m].y + 1] != 0) {
rem (field [team [m].x][team [m].y + 1], teamsize);
field [team [m].x][team [m].y + 1] = team [m].id;
teamsize--;
}
else {
field [team [m].x][team [m].y + 1] = team [m].id;
}
field [team [m].x][team [m].y] = 0;
}
else if (team [i].direction == West){
if (team [m].y == 0){
if (field [team [m].x][team [m].y + 1] != 0){
rem (field [team [m].x][team [m].y + 1], teamsize);
field [team [m].x][team [m].y + 1] = team [m].id;
teamsize--;
}
else {
field [team [m].x][team [m].y + 1] = team [m].id;
}
}
if (field [team [m].x][team [m].y - 1] != 0) {
rem (field [team [m].x][team [m].y - 1], teamsize);
field [team [m].x][team [m].y - 1] = team [m].id;
teamsize--;
}
else {
field [team [m].x][team [m].y - 1] = team [m].id;
}
field [team [m].x][team [m].y] = 0;
}
else if (team [i].direction == North){
if (team [m].x == 0){
if (field [team [m].x + 1][team [m].y] != 0){
rem (field [team [m].x + 1][team [m].y], teamsize);
field [team [m].x + 1][team [m].y] = team [m].id;
teamsize--;
}
else {
field [team [m].x + 1][team [m].y] = team [m].id;
}
if (field [team [m].x - 1][team [m].y] != 0){
rem (field [team [m].x - 1][team [m].y], teamsize);
field [team [m].x - 1][team [m].y] = team [m].id;
teamsize--;
}
else {
field [team [m].x - 1][team [m].y] = team [m].id;
}
field [team [m].x][team [m].y] = 0;
}
else if (team [i].direction == South){
if (team [m].x == 24){
if (field [team [m].x - 1][team [m].y] != 0){
rem (field [team [m].x - 1][team [m].y], teamsize);
field [team [m].x - 1][team [m].y] = team [m].id;
teamsize--;
}
else {
field [team [m].x - 1][team [m].y] = team [m].id;
}
if (field [team [m].x + 1][team [m].y] != 0){
rem (field [team [m].x + 1][team [m].y], teamsize);
field [team [m].x + 1][team [m].y] = team [m].id;
teamsize--;
}
else {
field [team [m].x + 1][team [m].y] = team [m].id;
}
field [team [m].x][team [m].y] = 0;
}
}
}
}
}
}
}
print_game (field);
return 0;
}
我怎麼知道呢?那麼,我測試了部分代碼,結果很好。只有當我包含這個巨大的循環時,事情纔會變得複雜。 無論如何,讓我知道如果你看到任何怪癖。
而且,這裏是我的REM功能:
int rem (int id, int teamsize){
int k;
for (k = 0; k < teamsize; k++){
if (team [k].id == id){
team [k].presence = 0;
}
}
}
我的枚舉:
enum move_direction {East = 1, West = 2, North = 3, South = 4};
這裏你的實際問題是什麼? – mathematician1975
這段代碼被大聲喊出來重構成幾個簡單的函數。 – paddy
我的問題是,在我剛剛發佈的代碼中,存在一個讓球員(陣列)上的球員(即數字)無法將點移動到現場的怪癖,我想知道它來自哪裏。就像我說的那樣,這是我以前提出的問題的後續行動,並且重寫整個程序(這是它的一大塊)已經引起了一些同行用戶的憤怒。 – Michformer