c語言程序設(shè)計-五子棋(總15頁_第1頁
c語言程序設(shè)計-五子棋(總15頁_第2頁
c語言程序設(shè)計-五子棋(總15頁_第3頁
c語言程序設(shè)計-五子棋(總15頁_第4頁
c語言程序設(shè)計-五子棋(總15頁_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、伊 犁 師 范 學 院 高級語言課程設(shè)計報告 學 院: 電子與信息工程學院 學生姓名: 學 號: 專業(yè)屆別: 指導教師: 完成時間: 五子棋游戲1 設(shè)計目的及要求目的:(1)學習綜合運用C語言課程和其他相關(guān)課程的知識,提高分析解決實際問題的能力,進一步鞏固、加深和拓寬所學的知識,進一步加強結(jié)構(gòu)化程序設(shè)計的思想,加深對高級語言基本語言要素和控制結(jié)構(gòu)的理解。(2)全面系統(tǒng)的學習面向?qū)ο蟪绦蛟O(shè)計的基本概念、基本語法和編程方法,與同學合作設(shè)計整套程序,并且獨立完成一定工作量的程序設(shè)計.(3)掌握程序設(shè)計中的常用算法和C語言的程序技巧,培養(yǎng)良好的程序設(shè)計風格。(4)運用所學的知識了解五子棋游戲的制作結(jié)構(gòu)

2、,將所學的知識運用于實踐中。要求:(1) 獨自設(shè)計、編制、調(diào)試出一款五子棋游戲。(2) 要求該游戲具有趣味性和可操作性,能夠正常運行。其中用到C語言中的各種語句、結(jié)構(gòu)。(如其中需要注意全局變量和局部變量的申明,數(shù)組的使用等)(3)五子棋游戲要求能夠進入歡迎界面,當有五顆相同顏色的棋子連續(xù)連成五顆,就勝出。任務:五子棋是一種傳統(tǒng)的棋盤游戲,是我國古代傳統(tǒng)的黑白棋種之一發(fā)展于日本,流行于歐洲任務內(nèi)容就是設(shè)計一款老少皆宜、能夠鍛煉個人策略謀劃能力棋。有助于孩子開發(fā)智力,或者閑暇時打發(fā)時間。原則:(1)系統(tǒng)性。系統(tǒng)作為統(tǒng)一整體而存在,因此,在設(shè)計中,要從系統(tǒng)的角度考慮。系統(tǒng)的代碼要統(tǒng)一,傳遞語言要盡可

3、能一致。(2)可靠性??煽啃允侵赶到y(tǒng)抵御外界干擾的能力及外界干擾時的恢復能力。(3)規(guī)范性。游戲的運用以吸引玩家的樂趣為前提,一方面,系統(tǒng)設(shè)計應盡量避免不必要的復雜化,另一方面模塊應盡量簡潔,以縮短處理流程。2 開發(fā)工具 C語言3 應用平臺Windows xp4 功能設(shè)計游戲分析: 五子棋是兩人之間的競技游戲,該五子棋程序基本上實現(xiàn)了五子棋游戲的功能,有雙方下棋之前的歡迎界面及下棋過程中的棋盤界面,還有最終會判斷出輸贏。同時,該游戲采用了二維坐標實現(xiàn)的,明了易懂,方便玩家在游戲過程中的基本操作,使游戲更加簡便。細節(jié)方面,該程序有實時儲存功能,隨時記錄。另外考慮到游戲挺簡單的,就沒有設(shè)置悔棋的相

4、關(guān)模塊。游戲介紹: 該游戲是簡單的雙人五子棋,所實現(xiàn)的功能是能夠顯示歡迎界面,選擇是否進行游戲,進入游戲界面以后,玩家開始下棋。玩家輸入坐標則會在棋盤上顯示棋子,(若是輸入的坐標超出棋盤或者該位子已經(jīng)有子則會提示玩家重新輸入坐標位子),若輸入則退出游戲。4.1 算法設(shè)計程序說明:五子棋是一款經(jīng)典的益智類游戲,通常是黑棋先行;五子棋專用盤為15*15方格,五個子的連接方向為橫、豎、斜,當任一方的五個子在各方向上連成一線時,則該方獲勝。程序要求:按照程序說明編寫五子棋程序,要求可以進行雙人之間的游戲。程序輸出:輸出棋盤、棋子,并能夠進行相應的操作。4.2流程圖模塊圖1:程序整體設(shè)計思路流程圖開始黑

5、白棋子交替出現(xiàn)移動當前棋子否選擇位置后放置棋子判斷是否有5個連成一線是結(jié)束圖2:繪圖過程的算法流程開始是結(jié)束否同顏色的五個連成直線放置棋子繪制棋盤(15*15)初始化圖形設(shè)備5 程序調(diào)試及運行5.1 程序運行結(jié)果圖1 初始化界面圖2 運行游戲的界面5.2 程序代碼#include “stdio.h”#include”graphics.h”#define LEFT 0x4b00#define RIGHT 0x4d00#define DOWN 0x5000#define UP 0x4800#define ESC 0x011b#define ENTER 0x1c0dint x=-1,y=0;int

6、max_x,max_y;int board_flag1515;void draw_board();void show_init(int pat);void hide();void show(int pat);void move();int is_win(int pat);void main() int driver=DETECT,mode; int i,j; for(i=0;i15;i+) for(j=0;j15;j+) board_flagij=0; initgraph(&driver,&mode,”);draw_board();show_init(0);move();getch();clo

7、segraph();void draw_board() int i;max_x=getmaxx();max_y=getmaxy();setfillstyle(1,BLUE);bar(0,0,max_x,max_y); for(i=-7;i=8;i+) line(max_x/2-7*26,max_y/2+i*26,max_x/2+8*26,max_y/2+i*26);line(max_x/2+i*26,max_y/2-7*26,max_x/2+i*26,max_y/2+8*26);void show_init(int pat)setcolor(BLUE);if(pat=0) setfillsty

8、le(1,BLACK);elsesetfillstyle(1,WHITE);x=-1;y=0;fillellipse(max_x/2-8*26+13,max_y/2-7*26+23,12,12);void hide()int m;m=board_flagxy;switch(m) case 0: setfillstyle(1,BLUE); break; case 1: setfillstyle(1,BLACK); break; case 2: Setfillstyle(1,WHITE); break; default: break;fillellipse(max_x/2+(x-7)*26+13,

9、max_y/2+(y-7)*26+13,12,12);void show(int pat)switch(pat) case 0: setfillstyle(1,BLACK); break; case 1: setfillstyle(1,WHITE); break; default: break; fillellipse(max_x/2+(x-7)*26+13,max_y/2+(y-7)*26+13,12,12);void move()int key;int pat=0;for(;) key=bioskey(0); switch(key) case LEFT: if(x=-1) break;hi

10、de();x-;x=x14?14:x;show(pat);break;case DOWN:if(x=-1) break;hide();y+;y=y14?14:y;show(pat); break;case UP: if(x=-1) break;hide();y-;y=y0?0:y;show(pat); break;case ENTER: if(board_flagxy!=0) break;show(pat);board_flagxy=pat+1; if(is_win(pat) settextstyle(0,0,3); setcolor(RED);if(pat=0) outtextxy(max_

11、x/2-80,max_y/2,”Black Win!”);else outtextxy(max_x/2-80,max_y/2,”White Win!”);setcolor(BLUE);getch();exit(1);if(pat=0) pat=1;elsepat=0;show_init(pat); break;case ESC: exit(1); break; default: break;int is_win(int pat)int i,j;int cnt=0;cnt=0;i=x;while(i=0) if(board_flagiy=pat+1)cnt+;elsebreak;i-;if(cn

12、t=5)return 1;cnt=0;i=x;j=y;while(i15)if(j=0)if(j14)break;if(board_flagij=pat+1)cnt+;elsebreak;i-;j+;if(cnt=5)return 1;cnt=0;j=y;while(j=0)if(board_flagxj=pat+1)cnt+;elsebreak;j-;j=y+1;while(j=5)return 1;cnt=0;i=x;j=y;while(i=0)if(j0)break;if(board_flagij=pat+1)cnt+;else break;i-;j-;i=x+1;j=y+1;while

13、(i14)break;if(board_flagij=pat+1)cnt+;elsebreak;i+;j+;if(cnt=5)return 1;return 0;6 結(jié)束語 在本次課程設(shè)計中,不僅讓我認識到自己學習上的不足,也通過請教其他同學和老師,讓我對程序進行了修改并運行,還讓自己復習了編程的知識,對遇見的眾多問題,通過思考,耐心動手解決問題。在設(shè)計五子棋游戲的過程中也讓我明白合作的力量,設(shè)計在課程設(shè)計期間我也學到了課本中學不到的知識,明白了只有通過自己不斷地動手實踐才能找出不足、找出問題和提高自己的能力,發(fā)現(xiàn)課程設(shè)計是我學習和掌握專業(yè)知識的好方法,它可以讓自己變得活躍,也會看明白程序問題,使自己受益匪淺。才能讓自己的能力不斷提高。 最后,感謝孫曉杰老師的悉心指導,教給我的程序設(shè)計的思想和知識。這次課程設(shè)計要感謝老師和同學為我提出了很多的寶貴意見,

溫馨提示

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

評論

0/150

提交評論