2023年全國(guó)碩士研究生考試考研英語(yǔ)一試題真題(含答案詳解+作文范文)_第1頁(yè)
已閱讀1頁(yè),還剩10頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、<p>  信息技術(shù)學(xué)院本科課程設(shè)計(jì)報(bào)告</p><p><b>  課程設(shè)計(jì)題目</b></p><p>  學(xué) 生 姓 名: </p><p>  學(xué) 院: 信息技術(shù)學(xué)院 </p><p>  專

2、 業(yè): 信息管理與信息系統(tǒng) </p><p>  班 級(jí): </p><p>  學(xué) 號(hào): </p><p>  指 導(dǎo) 教 師: </p><p> 

3、 完 成 日 期: </p><p><b>  題目(問(wèn)題)描述</b></p><p>  貪吃蛇小游戲程序設(shè)計(jì)</p><p>  圖1 貪吃蛇系統(tǒng)界面</p><p><b>  功能分析</b></p><

4、;p>  貪吃蛇游戲是一個(gè)經(jīng)典小游戲,一條蛇在封閉圍墻里,圍墻里隨機(jī)出現(xiàn)一個(gè)食物,通過(guò)按鍵盤(pán)四個(gè)光標(biāo)鍵控制蛇向上下左右四個(gè)方向移動(dòng),蛇頭撞倒食物,則食物被吃掉,蛇身體長(zhǎng)一節(jié),同時(shí)記10分,接著又出現(xiàn)食物,等待蛇來(lái)吃,如果蛇在移動(dòng)中撞到墻或身體交叉蛇頭撞倒自己身體游戲結(jié)束。</p><p><b>  系統(tǒng)設(shè)計(jì)</b></p><p><b>  程序總

5、體結(jié)構(gòu)</b></p><p>  圖2貪吃蛇程序系統(tǒng)的構(gòu)圖</p><p><b>  2.界面設(shè)計(jì)</b></p><p>  如圖,通過(guò)W、S、A、D、space鍵進(jìn)行操作</p><p><b>  3.輸入方式設(shè)計(jì)</b></p><p>  A 用W、

6、S、A、D、鍵控制蛇的上下左右移動(dòng),space鍵停止,esc鍵結(jié)束。</p><p>  B 游戲目標(biāo):操縱屏幕上那條可愛(ài)的小蛇,在方框中不停吃豆豆,而每吃一個(gè)豆豆,蛇的身體都變的更長(zhǎng)一些,即增加一顆星星。游戲的難度也會(huì)隨之加大。</p><p>  C 游戲終止:終止條件1——蛇頭撞到墻上;終止條件2——蛇身形成一個(gè)圈,也就是蛇頭碰到自身的任何一處</p><p>

7、;  4.重要數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)設(shè)計(jì)</p><p><b>  5.函數(shù)設(shè)計(jì)</b></p><p><b>  6.函數(shù)調(diào)用圖</b></p><p><b>  7. 實(shí)體屬性圖</b></p><p>  關(guān)鍵技術(shù)、難點(diǎn)及其解決方法</p><p>

8、;<b>  測(cè)試方法</b></p><p><b>  總結(jié)</b></p><p><b>  附錄1</b></p><p><b>  程序源代碼</b></p><p>  #include <windows.h></p>

9、;<p>  #include <stdlib.h></p><p>  #include <time.h></p><p>  #include <stdio.h></p><p>  #include <string.h></p><p>  #include <coni

10、o.h></p><p>  #define N 21</p><p>  int apple[3];</p><p>  char score[3];</p><p>  char tail[3]; </p><p>  void gotoxy(int x, int y) //輸出坐標(biāo) </p>

11、;<p><b>  {</b></p><p>  COORD pos;</p><p>  pos.X = x; </p><p>  pos.Y = y;</p><p>  SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), pos);

12、</p><p><b>  }</b></p><p>  void color(int b) //顏色函數(shù) </p><p><b>  {</b></p><p>  HANDLE hConsole = GetStdHandle((STD_OUTPUT_HANDLE)) ; &

13、lt;/p><p>  SetConsoleTextAttribute(hConsole,b) ;</p><p><b>  } </b></p><p>  int Block(char head[2]) //判斷出界 </p><p><b>  {</b></p><p&

14、gt;  if ((head[0] < 1) || (head[0] > N) || (head[1] < 1) || (head[1] > N))</p><p><b>  return 1;</b></p><p><b>  return 0;</b></p><p><b>  

15、}</b></p><p>  int Eat(char snake[2]) //吃了蘋(píng)果 </p><p><b>  {</b></p><p>  if ((snake[0] == apple[0]) && (snake[1] == apple[1]))</p><p><b&

16、gt;  {</b></p><p>  apple[0] = apple[1] = apple[2] = 0;</p><p>  gotoxy(N+44,10);</p><p>  color(13);</p><p>  printf("%d",score[0]*10);</p><

17、p>  color(11);</p><p><b>  return 1;</b></p><p><b>  }</b></p><p><b>  return 0;</b></p><p><b>  }</b></p><

18、;p>  void Draw(char **snake, int len) //蛇移動(dòng) </p><p><b>  {</b></p><p>  if (apple[2]) {</p><p>  gotoxy(apple[1] * 2, apple[0]);</p><p>  color(12);&l

19、t;/p><p>  printf("●");</p><p>  color(11);</p><p><b>  }</b></p><p>  gotoxy(tail[1] * 2, tail[0]);</p><p>  if (tail[2]) </p>&

20、lt;p>  { color(14);</p><p>  printf("★");</p><p>  color(11);</p><p><b>  }</b></p><p><b>  else </b></p><p>  printf

21、("■");</p><p>  gotoxy(snake[0][1] * 2, snake[0][0]);</p><p>  color(14);</p><p>  printf("★");</p><p>  color(11);</p><p>  putchar(&#

22、39;\n');</p><p><b>  }</b></p><p>  char** Move(char **snake, char dirx, int *len) //控制方向 </p><p><b>  {</b></p><p>  int i, full = Eat(sn

23、ake[0]);</p><p>  memcpy(tail, snake[(*len)-1], 2);</p><p>  for (i = (*len) - 1; i > 0; --i) </p><p>  memcpy(snake[i], snake[i-1], 2);</p><p>  switch (dirx) </

24、p><p><b>  { </b></p><p>  case 'w': case 'W': --snake[0][0]; break;</p><p>  case 's': case 'S': ++snake[0][0]; break;</p><p>

25、  case 'a': case 'A': --snake[0][1]; break;</p><p>  case 'd': case 'D': ++snake[0][1]; break;</p><p>  default: ;</p><p><b>  } </b><

26、;/p><p>  if (full) </p><p><b>  { </b></p><p>  snake = (char **)realloc(snake, sizeof(char *) * ((*len) + 1));</p><p>  snake[(*len)] = (char *)malloc(size

27、of(char) * 2);</p><p>  memcpy(snake[(*len)], tail, 2);</p><p><b>  ++(*len);</b></p><p>  ++score[0];</p><p>  if(score[3] < 16) </p><p>  

28、++score[3];</p><p>  tail[2] = 1;</p><p><b>  }</b></p><p><b>  else </b></p><p>  tail[2] = 0;</p><p>  return snake;</p>&

29、lt;p><b>  }</b></p><p>  void init(char plate[N+2][N+2], char ***snake_x, int *len) //初始化 </p><p><b>  {</b></p><p><b>  int i, j;</b></p&

30、gt;<p>  char **snake = NULL;</p><p><b>  *len = 3;</b></p><p>  score[0] = score[3] =3;</p><p>  snake = (char **)realloc(snake, sizeof(char *) * (*len));</p&

31、gt;<p>  for (i = 0; i < *len; ++i)</p><p>  snake[i] = (char *)malloc(sizeof(char) * 2);</p><p>  for (i = 0; i < 3; ++i) </p><p><b>  {</b></p><

32、;p>  snake[i][0] = N/2 + 1;</p><p>  snake[i][1] = N/2 + 1 + i;</p><p><b>  } </b></p><p>  for (i = 1; i <= N; ++i) </p><p>  for (j = 1; j <= N;

33、++j) </p><p>  plate[i][j] = 1;</p><p>  apple[0] = rand()%N + 1; apple[1] = rand()%N + 1;</p><p>  apple[2] = 1;</p><p>  for (i = 0; i < N + 2; ++i) </p>&l

34、t;p><b>  {</b></p><p>  gotoxy(0, i);</p><p>  for (j = 0; j < N + 2; ++j) </p><p><b>  {</b></p><p>  switch (plate[i][j]) </p>&l

35、t;p><b>  {</b></p><p><b>  case 0: </b></p><p>  color(12);printf("□");color(11); continue;</p><p>  case 1: printf("■"); continue;<

36、;/p><p>  default: ;</p><p><b>  }</b></p><p><b>  }</b></p><p>  putchar('\n');</p><p><b>  } </b></p><

37、;p>  for (i = 0; i < (*len); ++i)</p><p><b>  {</b></p><p>  gotoxy(snake[i][1] * 2, snake[i][0]);</p><p>  printf("★");</p><p><b>  }

38、 </b></p><p>  putchar('\n');</p><p>  *snake_x = snake;</p><p><b>  }</b></p><p>  void Manual()</p><p><b>  {</b>&l

39、t;/p><p>  gotoxy(N+30,2);</p><p>  color(10);</p><p>  printf("按 W S A D 移動(dòng)方向");</p><p>  gotoxy(N+30,4);</p><p>  printf("按 space 鍵暫停");

40、 </p><p>  gotoxy(N+30,8);</p><p>  color(11);</p><p>  printf("歷史最高分為: ");</p><p>  color(12);</p><p>  gotoxy(N+44,8);</p><p>  pr

41、intf("%d",score[1]*10);</p><p>  color(11);</p><p>  gotoxy(N+30,12);</p><p>  printf("你現(xiàn)在得分為: 0"); </p><p><b>  }</b></p>

42、<p>  int File_in() //取記錄的分?jǐn)?shù) </p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  if((fp = fopen("C:\\tcs.txt","a+")) == NULL

43、)</p><p><b>  {</b></p><p>  gotoxy(N+18, N+2);</p><p>  printf("文件不能打開(kāi)\n");</p><p><b>  exit(0);</b></p><p><b>  }

44、</b></p><p>  if((score[1] = fgetc(fp)) != EOF);</p><p><b>  else</b></p><p>  score[1] = 0;</p><p><b>  return 0;</b></p><p>

45、;<b>  }</b></p><p>  int File_out() //存數(shù)據(jù) </p><p><b>  {</b></p><p><b>  FILE *fp;</b></p><p>  if(score[1] > score[0]) </p

46、><p>  {gotoxy(10,10);</p><p>  color(12);</p><p>  puts("闖關(guān)失敗 加油耶");</p><p>  gotoxy(0,N+2); </p><p><b>  return 0;</b></p><

47、p><b>  }</b></p><p>  if((fp = fopen("C:\\tcs.txt","w+")) == NULL)</p><p><b>  {</b></p><p>  printf("文件不能打開(kāi)\n");</p>

48、<p><b>  exit(0);</b></p><p><b>  }</b></p><p>  if(fputc(--score[0],fp)==EOF)</p><p>  printf("輸出失敗\n");</p><p>  gotoxy(10,10)

49、;</p><p>  color(12);</p><p>  puts("恭喜您打破記錄"); </p><p>  gotoxy(0,N+2);</p><p><b>  return 0;</b></p><p><b>  }</b></

50、p><p>  void Free(char **snake, int len) //釋放空間 </p><p><b>  {</b></p><p><b>  int i;</b></p><p>  for (i = 0; i < len; ++i) </p><

51、p>  free(snake[i]);</p><p>  free(snake);</p><p><b>  }</b></p><p>  int main(void)</p><p><b>  {</b></p><p><b>  int len;

52、</b></p><p>  char ch = 'g';</p><p>  char a[N+2][N+2] = {{0}};</p><p>  char **snake;</p><p>  srand((unsigned)time(NULL));</p><p>  color(1

53、1);</p><p>  File_in();</p><p>  init(a, &snake, &len);</p><p><b>  Manual();</b></p><p>  while (ch != 0x1B) // 按 ESC 結(jié)束 </p><p><

54、;b>  { </b></p><p>  Draw(snake, len);</p><p>  if (!apple[2]) {</p><p>  apple[0] = rand()%N + 1;</p><p>  apple[1] = rand()%N + 1;</p><p>  appl

55、e[2] = 1;</p><p><b>  }</b></p><p>  Sleep(200-score[3]*10);</p><p>  setbuf(stdin, NULL);</p><p>  if (kbhit())</p><p><b>  {</b>&

56、lt;/p><p>  gotoxy(0, N+2);</p><p>  ch = getche();</p><p><b>  }</b></p><p>  snake = Move(snake, ch, &len); </p><p>  if (Block(snake[0])==1

57、) </p><p><b>  {</b></p><p>  gotoxy(N+2, N+2);</p><p>  puts("你輸了");</p><p>  File_out();</p><p>  Free(snake, len);</p><

58、p><b>  getche();</b></p><p><b>  exit(0); </b></p><p>  } </p><p><b>  }</b></p><p>  Free(snake, len);<

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫(kù)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論