2014-12-03 38 views
0

編輯#1。
現在我看到我的功能不適用於這個遊戲,所以請忘記它們。
仍然沒有找到解決方案,看到一些關於隊列的文檔,因爲fjf2002提到,但這對我來說太複雜了。試圖讓一個蛇[20]數組存儲座標2
{1,1,1,2}將是:Head(1,1)Tail(1,2)在地圖上。仍然無法想象如何在地圖上移動它,並讓尾巴跟隨頭部。在我嘗試了一切之後,我的思想是空白的,並由於缺乏經驗而感到沮喪。我不允許使用超出二維數組的任何東西。這意味着沒有結構,沒有隊列,沒有堆棧......這應該是沒有使用這些,專家說這比我想象的更容易。 (不要發佈我應該問他的解決方案,因爲他一直說,沒有回答我的問題)。任何想法都會對我有很大幫助...
---------------------------------------- -------------------------------------------------- ------------------------------------------ 即時通訊使用VisualStudio 2013和編程C語言。

正在尋找在過去2天的解決方案,並沒有找到任何互聯網來幫助我。看到幾十種不同的英文和西班牙文的蛇遊戲,但我無法理解他們,因爲他們的計劃零解釋或由於我缺乏經驗。根據頭部的移動無法刪除蛇的尾巴

嘗試了一切我的知識沒有成功,我真的不能真正拿出我自己的解決方案。

我:

- 功能生成地圖。
- 功能移動蛇:

COORD cxy; 
#define posicion(x,y) {(cxy.X)= (x);(cxy.Y)= (y); SetConsoleCursorPosition((GetStdHandle(STD_OUTPUT_HANDLE)), (cxy));} 

int tablero[20][20], posx = 0, posy = 0; 

void movimientoSnake(){ 
    int m = 1, k = 0, tail = 3; 
    char dir = 'd'; 

    do{ 

     if (kbhit()){ 
      dir = getch(); 

      if (dir == 'w'){ 
       m = 0; 
       k = -1; 
      } 
      if(dir == 's'){ 
       m = 0; 
       k = 1; 
      } 
      if (dir == 'a'){ 
       m = -1; 
       k = 0; 

      } 
      if (dir == 'd'){ 
       m = 1; 
       k = 0; 
      } 
     } 
     else{ 

      Sleep(500); 

      posicion(posx += m, posy += k); 
      printf("%d", 1); 
      posicion(posx - tail, posy); 
      printf("%d", 0); 

     } 

    } while (2 > 1); 

*蛇按WASD鍵移動確定,它留下1的痕跡(圖充滿0的)。 *它根據位置移動:地圖的位置(x,y)(在那裏移動)printf(「%d」,1); (打印1)。例如

主要問題是,當我想要刪除線索時,我向下移動,刪除最後一個位置,同時即時打印新的一個。

如果可能的話我想沒有太多複雜的(使用過多的庫)中的溶液,現在我只知道:

#include <stdio.h> 
#include <Windows.h> 
#include <stdlib.h> 

我嘗試存儲陣列上的座標,因爲我看到的幾乎90%蛇遊戲在那裏,但我不明白這個概念,所以我結束了一堆嘗試沒有成功。

任何想法? 非常感謝您提前。

+0

'while(2> 1);'?? – 2014-12-03 19:35:41

+0

@Weather_Vane它是一個無限循環,因爲我想要它進行測試。 – Papafrita 2014-12-03 20:02:33

+0

對於無限循環,通常寫'while(1)'。 – 2014-12-04 21:09:19

回答

1

因此,讓我們總結一下:

  1. 只知道蛇的頭部的座標,如何確定尾部的座標?
  2. 由於蛇可能有幾圈,沒有直接的方式。正如我在看到近90%的蛇遊戲在那裏

    似乎是唯一的解決辦法

我嘗試存儲的座標上的陣列。

,但我不理解這個概念

+0

似乎是一個不錯的選擇。但是我們還沒有在課堂上看到過隊列。沒有其他可能嗎?其他的蛇代碼有類似Snake [0] .y的功能/結構是什麼?謝謝。 – Papafrita 2014-12-03 22:34:18

+0

「[]」大括號指示(大部分時間)使用數組。 「.y」表示:數組條目是一個類或結構類型,它有一個名爲「y」的成員。 – fjf2002 2014-12-03 22:47:00

+0

將不可避免的事實是,你需要存儲蛇所佔據的所有座標。閱讀有關使用數組手動實現隊列數據結構的信息。如果蛇不增長,循環緩衝區可能會更簡單一些:http://en.wikipedia.org/wiki/Circular_buffer – fjf2002 2014-12-03 22:49:23