C語言課程設(shè)計(jì)(論文)跳棋_第1頁
C語言課程設(shè)計(jì)(論文)跳棋_第2頁
C語言課程設(shè)計(jì)(論文)跳棋_第3頁
C語言課程設(shè)計(jì)(論文)跳棋_第4頁
C語言課程設(shè)計(jì)(論文)跳棋_第5頁
已閱讀5頁,還剩37頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、1 學(xué)年論文學(xué)年論文 (課程論文、課程設(shè)計(jì))(課程論文、課程設(shè)計(jì)) 題題目:目: 跳跳 棋棋 作作者:者: 所在系別:所在系別: 計(jì)計(jì) 算算 機(jī)機(jī) 學(xué)學(xué) 院院 專業(yè)年級(jí):專業(yè)年級(jí): 2007 級(jí)計(jì)算機(jī)與科學(xué)技術(shù)級(jí)計(jì)算機(jī)與科學(xué)技術(shù) 指導(dǎo)教師:指導(dǎo)教師: 職職稱:稱: 講講 師師 2008 年年 12 月月 31 日日 2 重慶文理學(xué)院重慶文理學(xué)院 課程論文(設(shè)計(jì))課程論文(設(shè)計(jì)) 、學(xué)年論文評(píng)分表、學(xué)年論文評(píng)分表 系別: 計(jì)算機(jī)學(xué)院 論文(設(shè)計(jì))性質(zhì): 題 目 跳棋 作 者 專業(yè)年級(jí) 07 計(jì)算機(jī) 科學(xué)與技 術(shù) 指導(dǎo)教師 指導(dǎo) 教師 評(píng)語 及 評(píng)分 建議 指導(dǎo)教師: 年 月 日 院 (系) 或

2、教 研 室 意 見 院(系)或教研室主任: 年 月 日 3 目錄目錄 一一 概述概述.6 1.11.1 引言引言.6 1.21.2 游戲的介紹游戲的介紹.6 1.31.3 流程圖流程圖.7 二二 跳棋的程序設(shè)計(jì)與功能實(shí)現(xiàn)跳棋的程序設(shè)計(jì)與功能實(shí)現(xiàn).8 2.12.1 設(shè)計(jì)思路設(shè)計(jì)思路.8 2.1.1 簡介.8 2.1.2 基本規(guī)則.8 2.1.3 操作.8 2.1.4 跳棋小技巧.9 2.22.2 程序的模塊分析程序的模塊分析.9 2.2.1 主功能函數(shù).9 2.2.2 棋子走動(dòng)的函數(shù).10 2.2.3 一子跳的合法性檢查的相關(guān)函數(shù)的分析.10 2.2.4 判斷是否勝利的相關(guān)程序的分析(以兩人戰(zhàn)為

3、例).10 三三 程序的不足及其優(yōu)化程序的不足及其優(yōu)化.11 3.13.1 程序的不足程序的不足.11 3.23.2 程序的優(yōu)化程序的優(yōu)化.11 體體 會(huì)會(huì).12 參考文獻(xiàn)參考文獻(xiàn).13 附附 錄錄.14 4 摘要摘要:論文運(yùn)用數(shù)據(jù)結(jié)構(gòu)的相關(guān)知識(shí),用 c 語言編寫的一個(gè)跳棋的小游戲。首先要先定義一 個(gè)二維數(shù)組來記錄屏幕上的各個(gè)點(diǎn)的狀態(tài),用不同功能的函數(shù)來實(shí)現(xiàn)對(duì)棋子的操作,讓棋子一步一 步的到達(dá)目的地。最后贏得勝利。跳棋由于是一款小游戲,棋盤設(shè)計(jì)與一般的棋盤不同,采用一個(gè) 正方形來表示棋盤,正方形的四個(gè)角存放初始的棋子。游戲可兩個(gè)、三個(gè),或四個(gè)人同時(shí)進(jìn)行。最 先到達(dá)對(duì)面的則贏得勝利。其中,數(shù)字(

4、2-4)是選擇人數(shù)游戲則同時(shí)自動(dòng)開始,a 表示左下方移 動(dòng),w 表示左上方移動(dòng),d 表示右上方移動(dòng),s 表示在下方移動(dòng),空格表示確定,b 表示返回,0 則 退出。游戲中設(shè)計(jì)了精美的屏幕,在贏得游戲時(shí)會(huì)有煙花爆炸,同時(shí)出現(xiàn)玩家的名次。游戲中有各 種提示以供參考,讓玩家真正感受到游戲的快樂。游戲在 dos 的狀態(tài)下運(yùn)行良好,能夠?qū)崿F(xiàn)上述功 能。 關(guān)鍵詞關(guān)鍵詞:人工智能、應(yīng)用、程序設(shè)計(jì) 5 abstract:this paper is the use of the data structure of knowledge, and use the c language in a checkers ga

5、me. first of all, first the definition of a two-dimensional array on the screen to record all the points, with different functions in the function to achieve piece of the operation, so that the piece step by step to reach their destinations. to win the final victory. as the game is a small, the boar

6、d is our own design, and the general board, we designed a square to indicate the board to allow the four corners of a square piece of the initial release. games can be two, three or four people at the same time. the first to reach the opposite is victory. among them, the numbers (2-4) is to choose t

7、he number of games while at the same time start automatically, a said that the lower left mobile, w said that the upper left mobile, d, said at the top right of the mobile, s said that in the bottom of the mobile, spaces that determine, b said that the anti-back , 0 quit. at the same time we also de

8、signed a beautiful screen, winning the game there will be fireworks exploded at the same time is now their position, and play a variety of tips for reference. allows gamers to really feel the joy of the game. the game can only be run under dos state. key words: artificial intelligence, application,

9、programm 6 一 概述 1.11.1 引言引言 跳棋”是一款經(jīng)典的益智小游戲,也是許多小朋友十分喜歡的小小游戲,很多的 家長為了鍛煉開發(fā)小孩的智力,買同類型的模具、游戲碟,現(xiàn)在可以在手機(jī)上玩,會(huì) 讓用戶感到更加方便,讓家長放心,想什么時(shí)候玩就什么時(shí)候玩,它規(guī)則簡單,操作 容易,讓小孩在游戲的同時(shí)也對(duì)世界充滿好奇。 1.21.2 游戲的介紹游戲的介紹 跳棋游戲要求通過將棋盤上一方的棋子在各種規(guī)則的限制下,經(jīng)過玩家一步一步 的計(jì)算和移動(dòng),全部一模一樣的移動(dòng)到對(duì)方的位置,先完成的則贏得游戲。跳棋有各 種各樣的板本,一般也有不同的規(guī)則。就是根據(jù)這此來設(shè)計(jì)的一款更為簡單和更適合 玩家的游戲。游戲

10、可同時(shí)(2-4)個(gè)人玩,只要選定幾個(gè)人后,棋子會(huì)自動(dòng)擺放,玩家 只須要按動(dòng)a,s,d,w四個(gè)方向鍵,就可以把棋子移動(dòng)到想要走的位置上去,如果選 擇棋子錯(cuò)誤則可用空格重新選擇。本游戲在dos模式下運(yùn)行,但也不失游戲的快樂,在 游戲的同時(shí)會(huì)有彩燈在屏幕上閃爍和各種精美的畫面,讓玩家真正感受到樂在其中。 贏得游戲后歡送界面,并提醒玩家是否還想再來一盤。 7 1.31.3 流程圖流程圖 ch=0 ch=getch() ch=else 介面初始化 開始 ch=getch() ch=n|n 規(guī)則介面 ch=else ch=0退出游戲 ch=getch()ch=b|bch=else ch=n|n ch=b|

11、b ch=2ch=3ch=4 二人戰(zhàn) 三人戰(zhàn)四人戰(zhàn) ch=else ch=0 繼續(xù)游戲ch=b|bch=getch() 8 圖 1 隔一子可跳 圖 2 初始化介面 二 跳棋的程序設(shè)計(jì)與功能實(shí)現(xiàn) 2.12.1 設(shè)計(jì)思路設(shè)計(jì)思路 2.1.12.1.1 簡介簡介 跳棋來自 1892 年的德國,由四角跳棋( halma , 1883 )改良而成,流傳到新 大陸時(shí)為增添神秘東方色彩,被命名為“中國跳棋”跳棋規(guī)則簡單易懂,一玩就 會(huì),實(shí)在是帶著平和心情、進(jìn)行美好回憶的益智棋戲。 2.1.22.1.2 基本規(guī)則基本規(guī)則 游戲人數(shù): 2 , 3 , 4 人 玩家營區(qū):起初玩家 6 顆棋子的放置位置, 是一個(gè)直

12、角三角形 玩家目標(biāo):玩家的 6 顆棋子要離鄉(xiāng)別井,連 走帶跳奔向?qū)?,完全占領(lǐng)正對(duì)面的營區(qū) 入營:棋子進(jìn)入目標(biāo)營區(qū) 走子:只能一步走棋子可四個(gè)方向走動(dòng),每 步 只能達(dá)到相鄰的空位 跳子:可以連續(xù)跳 一子跳棋規(guī)則:隔一個(gè)棋子可以跳(如:圖 1) 2.1.32.1.3 操作操作 1.進(jìn)入初始化介面,選擇 2、3、4 可以分別進(jìn)入 2 人、3 人、4 人作戰(zhàn)介面 2.當(dāng)游戲沒有始時(shí),四個(gè)指示燈為黃色,每輪游戲從第一個(gè)玩家開始走,相應(yīng)的指示 燈就會(huì)變成相應(yīng)的顏色,誰的指示燈變了顏色,誰就可以走動(dòng)棋子 3.w、a、s、d 為方向鍵,選中自己棋子,點(diǎn)擊空格,即可選定你要走的棋子 4.如果中途想更換棋子,重

13、復(fù)操作 2 即可 5.選中你要放的空位,點(diǎn)擊空格,如果符合規(guī) 則,則會(huì)將你選中的棋子移動(dòng)到你選中 的空位中 6.如果選中的棋子和空位不符合規(guī)則,則重復(fù) 上述操作即可 7.選擇b或b可以返回初始化介面 (如:圖 2);選擇0可以退出整個(gè)游戲 9 圖3 二人對(duì)戰(zhàn) 圖 4 三人對(duì)戰(zhàn) 圖 5 四人對(duì)戰(zhàn) 圖 6 游戲結(jié)束介 面 2.1.42.1.4 跳棋小技巧跳棋小技巧 1.開局可以學(xué)習(xí)一些定式,快速出子,先手 尤其要制定自己的戰(zhàn)術(shù),貫徹下去以保持 先機(jī)。 2.中盤注重攻守平衡,整體推進(jìn),最忌為對(duì)手以少量兵力占據(jù)要津,甚至分割棋勢(shì)。 先手注意快攻壓制,后手注意防穩(wěn)覓機(jī)。 3.收宮決戰(zhàn),注意不要因急于入營

14、,而忘記為后續(xù)棋子搭橋助跳。 2.22.2 程序的模塊分析程序的模塊分析 該程序是由兩個(gè)結(jié)構(gòu)和若干個(gè)函數(shù)組成的,下面對(duì)其中的一些結(jié)構(gòu)和函數(shù)做一下分 析或解釋。 2.2.12.2.1 主功能函數(shù)主功能函數(shù) 主功能函數(shù)包括了整個(gè)游戲程序的所有功 能函數(shù),首先調(diào)用了一個(gè)歡迎介面,然后用一 個(gè)while循環(huán)重復(fù)調(diào)用游戲相關(guān)函數(shù), 直到按0退出,退出后又有一個(gè)結(jié)束介面,按兩 次任意鍵退出。 在while循環(huán)里面,首先對(duì)游戲介面進(jìn)行初 始化,以及指示燈的設(shè)置,然后根據(jù)玩家輸入 的信號(hào)(2、3、4)分別進(jìn)入兩人戰(zhàn)(如:圖3)、三人 戰(zhàn)(如:圖4)、四人戰(zhàn)(如:圖5)游戲介面,在游戲介面函數(shù)里面會(huì)調(diào)用相關(guān)的棋

15、子走動(dòng)函 數(shù)、合法性 檢查的相關(guān) 函數(shù)以及勝 利后燃放煙 花的函數(shù), 當(dāng)本盤游戲 下完或者玩 家想重新選 擇游戲模式而按了b鍵即返回,則將會(huì)退回到初始化介面,若繼續(xù)按b鍵則會(huì)退回到具 體的規(guī)則介紹介面,若還按b鍵則會(huì)退回到游戲的歡迎介面,除了在游戲規(guī)則的具體介 10 圖 7 光標(biāo)不會(huì)從頭開始 圖 8 放煙花 紹介面只能按b鍵返回和n鍵下一頁外,其余介面可隨時(shí)按0退出整個(gè)游戲程序,即直 接跳到整個(gè)游戲的結(jié)束介面(如:圖6)。 2.2.22.2.2 棋子走動(dòng)的函數(shù)棋子走動(dòng)的函數(shù) 此函數(shù)是在玩家選擇了游戲模式后才被調(diào)用的,游戲是以外圈為黃色作為光標(biāo), 每盤游戲都是從第一個(gè)玩家開始走棋。初始化時(shí)指示燈

16、都為黃色在游戲開始的同時(shí)指 示燈會(huì)發(fā)出信號(hào),即該誰走棋時(shí)相應(yīng)的指示燈會(huì)變成相應(yīng)的顏色。玩家移動(dòng)光標(biāo)用 w(左上方)、a(左下方)、s(右下方)、d(右上方)四個(gè)鍵來實(shí)現(xiàn),用空格來選定 玩家要走的棋子及要放的位置,玩家在選擇棋子時(shí)可重復(fù)選擇,被選擇的棋子的會(huì)以 綠色外圈作為標(biāo)志,而且每個(gè)玩家都有自己的光標(biāo),即每個(gè)玩家走完棋后都會(huì)把他的 光標(biāo)位置保存下來,以便下次輪到此玩家時(shí), 他對(duì)應(yīng)的光標(biāo)會(huì)在他上次走過的位置,避免 從頭開始(如:圖7)。在每個(gè)玩家走完棋后,此 函數(shù)會(huì)返回一個(gè)key值,以確定下一個(gè)走棋的 玩家。 2.2.32.2.3 一子跳的合法性檢查的相關(guān)函數(shù)的分一子跳的合法性檢查的相關(guān)函數(shù)的

17、分 析析 此函數(shù)是在棋子走動(dòng)函數(shù)中被調(diào)用的,主要是檢查玩家棋子一子跳及連續(xù)跳的合 法性。在棋子走動(dòng)函數(shù)在首先會(huì)檢查棋子是一步走,還是一子跳,如果玩家是一子跳, 則會(huì)調(diào)用一子跳的合法性檢查的相關(guān)函數(shù)。 調(diào)用此函數(shù)需傳入玩家選擇的棋子的位置及要放的位置,在此函數(shù)中,從棋子位 置的第一個(gè)方向開始查找,每查找一個(gè)位置都會(huì)用一個(gè)棧把它保存下來,直到四個(gè)方 向都找完了,或者找到了要放的位置,則將棧清空。如果找到了則返回1,如果沒找到 且棧為空,則返回0 。 2.2.42.2.4 判斷是否勝利的相關(guān)程序的分析判斷是否勝利的相關(guān)程序的分析(以兩人戰(zhàn)為例以兩人戰(zhàn)為例) 此程序是在游戲模式函數(shù)中運(yùn)行的,這里以兩人

18、戰(zhàn)模式為例。兩人對(duì)戰(zhàn)分別往對(duì) 方走,當(dāng)一家的棋子完全占領(lǐng)對(duì)方的營區(qū)時(shí)則 表示該玩家勝利,該玩家也不再走棋,他的指 示燈上會(huì)記錄該玩家的名次,并為此玩家燃放 煙花以表慶祝(如:圖8) 。剩余玩家可繼續(xù)走棋 子直到全部棋子都進(jìn)入對(duì)方的營區(qū),此時(shí)剩余 玩家的指示燈上也會(huì)記錄相應(yīng)玩家的名次同時(shí) 也會(huì)燃放煙花,則本盤游戲結(jié)束,將退回初始 介面。當(dāng)然剩余玩家也可不再繼續(xù)走棋,直接 按b鍵也可返回到初始化介面。 11 三三 程序的不足及其優(yōu)化程序的不足及其優(yōu)化 3.13.1 程序的不足程序的不足 只能在 dos 狀態(tài)下進(jìn)行,與在 windows 狀態(tài)下進(jìn)行的游戲相比存在著不能讓玩家 自由操控棋子,游戲的玩家

19、數(shù)和棋子數(shù)不多,其中在玩的過程中還沒有聲音,界面與 現(xiàn)在各種游戲比起來還是有很大的差距。在游戲的過程中所有的玩家只能通過四個(gè)鍵 來控制棋子,走與來極其不方便這與真正的自能化還有很大的差距。在走的過程中如 果玩家選錯(cuò)棋子可能重新選擇(即毀棋)這與真正的游戲的理念不同。這樣的情況無 疑會(huì)帶給人相當(dāng)大的挫折感等一些缺點(diǎn)。 3.23.2 程序的優(yōu)化程序的優(yōu)化 游戲的棋盤不夠大,棋子的數(shù)量也不多,我們可能通過增加棋盤的大小,增多棋 子的數(shù)量來改進(jìn),從而讓更多的玩家參與讓玩家感受到更大的樂趣,程序中還有一些 細(xì)節(jié)做得不好,我們可以通過反復(fù)的思考讓游戲運(yùn)行更人性化,給玩家?guī)砀蟮臉?趣。 12 體體 會(huì)會(huì)

20、 通過這次的 c 語言的課程設(shè)計(jì),我覺得對(duì)我們每個(gè)參加的人提高都很大。在大家的 共同努力我們克服了一個(gè)又一個(gè)擺在我們面前的難題。這次課程設(shè)計(jì)的成功無疑肯定 了我們這個(gè)團(tuán)體的合作精神,它不是靠一個(gè)人的努力就能完成的。在整個(gè)設(shè)計(jì)過程中 大家合理分工,遇到難題就共同探討,通過各種渠道(如上網(wǎng)查資料,到圖書館查找 相關(guān)書籍)解決了我們遇到的問題。編寫 c 語言源程序,然后是進(jìn)行編譯,這個(gè)環(huán)節(jié) 是一個(gè)非常痛苦和艱難的,常常會(huì)因?yàn)橐恍↑c(diǎn)的錯(cuò)誤而在編譯失敗與再次修改的漫漫 循環(huán)之路中,但失敗的越多,對(duì)人的考驗(yàn)就越多,在編譯運(yùn)行成功之后的享受成功的 喜悅也就越多,另外在調(diào)試程序的過程中不斷的思考和運(yùn)用已經(jīng)學(xué)到

21、的知識(shí),這對(duì)于 自己是有很大的提高的。從中我們也感受到了編程是一項(xiàng)非常煩瑣周密的工作,它不 但需要我們周密思考問題和處理問題的能力,更需要有足夠的耐心和和嚴(yán)謹(jǐn)?shù)膶W(xué)習(xí)作 風(fēng)。通過本次的課程設(shè)計(jì),我初步學(xué)會(huì)了課程設(shè)計(jì)的基本方法,雖然這次只是一個(gè)小 小的跳棋游戲,但對(duì)于我們初學(xué)者來說也是一件相對(duì)困難的事情。大家在這次跳棋游 戲中都受益匪淺。 13 參考文獻(xiàn)參考文獻(xiàn) 1譚明金,俞海英編著. c 語言程序設(shè)計(jì)實(shí)例精粹. 北京電子工業(yè)子出版社,2007.1 14 附附 錄錄 #include #include #include #include #include #include #define pi 3

22、.1415926 #define m 10 #define m 13 #define n 13 char ch; int x,y,back,battle,mazemn; typedef struct/*用來記錄坐標(biāo)*/ int x; int y; node; /*棋盤中所有可以放棋子的坐標(biāo)*/ node sate45=240,30,205,65,275,65,170,100,240,100,310,100, 30,240,65,205,65,275,100,170,100,240,100,310, 240,450,205,415,275,415,170,380,240,380,310,380,

23、 450,240,415,205,415,275,380,170,380,240,380,310, 205,135,275,135,205,345,275,345,170,170,240,170, 310,170,170,310,240,310,310,310,240,240, 135,205,205,205,275,205,345,205,135,275, 205,275,275,275,345,275,170,240,310,240; /*玩家相應(yīng)的指示燈的坐標(biāo)*/ node tags4=60,60,60,420,445,420,445,60; node abcd4,interimm*n;

24、 typedef struct node seat; int dir; elem; elem sm*n; /*用來保存光標(biāo)的坐標(biāo)及其移動(dòng)的方向*/ int top=-1; void menu();/*主功能函數(shù)*/ void law();/*介面的格式控制函數(shù)*/ void over();/*游戲退出時(shí)的歡迎介面*/ void first();/*游戲的歡迎介面*/ void second();/*游戲規(guī)則介紹函數(shù)*/ void initsate();/*游戲的初始化介面*/ void glorify1();/*介面的背景控制函數(shù)及傳入數(shù)據(jù)的入口*/ void glorify2();/*游戲中

25、的指示燈設(shè)置函數(shù)*/ void explode(int color); /*煙花函數(shù)*/ void twobattle();/*兩人戰(zhàn)控制函數(shù)*/ void threebattle();/*三人戰(zhàn)控制函數(shù)*/ void fourbattle();/*四人戰(zhàn)控制函數(shù)*/ node nextpos(node pos, int dir);/*查找下一個(gè)方向*/ int move(int i,int j,int key,void *buf);/*棋子走動(dòng)的函數(shù)*/ 15 int mazepath(int mazemn, node start, node end,int key);/*合法性檢查*/ i

26、nt main()/*主函數(shù)*/ menu(); return 0; void menu()/*主功能函數(shù)*/ first();/*游戲的歡迎介面*/ while(1) back=0;x=10;y=10;battle=0; initsate();/*游戲的初始化介面*/ law();/*介面的格式控制函數(shù)*/ glorify2();/*游戲中的指示燈設(shè)置函數(shù)*/ glorify1();/*介面的背景控制函數(shù)及傳入數(shù)據(jù)的入口*/ if(ch=b|ch=b)closegraph();second();/*游戲規(guī)則介紹函數(shù)*/ if(ch=0) closegraph();over();break;/

27、*游戲退出時(shí)的歡迎介面*/ if(ch=2) battle=2;twobattle();/*2人戰(zhàn)的控制函數(shù)*/ if(ch=3) battle=3;threebattle();/*3人戰(zhàn)的控制函數(shù)*/ if(ch=4) battle=4;fourbattle();/*4人戰(zhàn)的控制函數(shù)*/ void first()/*游戲的歡迎介面*/ int gdriver=detect,gmode; initgraph( setbkcolor(14); setcolor(2); setfillstyle(1,2); rectangle(120,20,522,460); floodfill(200,200,

28、2); setcolor(4); settextstyle(1,0,8); outtextxy(175,30,chinese); outtextxy(155,100,checkers); rectangle(140,30,500,185); setcolor(5); settextstyle(1,0,4); outtextxy(250,220,designers); rectangle(145,210,495,320); setcolor(4); settextstyle(1,0,2); outtextxy(150,260, li aijin wen zicheng ); outtextxy(

29、150,285, zhu chunmiao); setcolor(9); settextstyle(1,0,1); outtextxy(150,340,all rights reserved, rights reserved.); setcolor(8); setfillstyle(1,8); rectangle(133,410,183,455); floodfill(135,425,8); rectangle(465,410,515,455); floodfill(470,420,8); setcolor(4); 16 settextstyle(0,0,1); outtextxy(133,4

30、05, press0:exit n:next); outtextxy(145,430,exit); outtextxy(477,430,next); while(1) ch=getch(); if(ch=0) closegraph();over();exit (0); if(ch=n|ch=n) break; closegraph(); second(); void second()/*游戲規(guī)則介紹函數(shù)*/ int gdriver=detect,gmode; initgraph( setbkcolor(14); setcolor(2); setfillstyle(1,2); rectangle

31、(120,20,522,460); floodfill(200,200,2); setcolor(4); settextstyle(3,0,0); outtextxy(280,25,rules); settextstyle(0,0,0); outtextxy(125,60,1.checkers rules.); setcolor(9); outtextxy(135,75, game start 2, 3, 4 people.playing chess with ); outtextxy(133,90,the diagonal side confrontation with anti-clock

32、-); outtextxy(133,105,wise.); setcolor(4); outtextxy(125,130,2.go sub-rules); setcolor(9); outtextxy(135,145, pawn mobilecan be a step by step in a straight); outtextxy(133,160,line connecting the adjacent four directions if); outtextxy(133,175, there is any position of adjacent to a pawn ,); outtex

33、txy(133,190,the position a straight line under the direction); outtextxy(133,205,of a place is empty,you can directly jump to the); outtextxy(133,220,space,the jump of the process,as long as the same); outtextxy(133,235,conditions can be carried out to meet.who is the); outtextxy(133,250,first one t

34、o the opposite positions are all occ-); outtextxy(133,265,upied, will win.); setcolor(4); outtextxy(125,290,3.chess rules); setcolor(9); outtextxy(135,305,when the interface into the game, players used (); outtextxy(133,320,2-4), a few key people to choose war, once sele-); outtextxy(133,335,cted ,

35、the game will automatically start.to the); outtextxy(133,350,top of the first, according to the anti-clockw-); outtextxy(133,365,ise rotation moves. if you choose to return to b); outtextxy(133,380,by mistake. if you want to launch the game at 0.); setcolor(8); setfillstyle(1,8); rectangle(133,410,1

36、83,455); 17 floodfill(135,425,8); rectangle(465,410,515,455); floodfill(470,420,8); setcolor(4); outtextxy(133,405, pressb:back n:next); outtextxy(145,430,back); outtextxy(477,430,next); while(1) ch=getch(); if(ch=b|ch=b) closegraph();first(); if(ch=n|ch=n) break; closegraph(); void over()/*游戲退出時(shí)的歡迎

37、介面*/ int i,gdriver,gmode; char s30; gdriver=detect; initgraph( setbkcolor(blue); cleardevice(); setviewport(100, 100, 550, 450, 1); setfillstyle(1, 2); setcolor(yellow); rectangle(0, 0, 439, 279); floodfill(50, 50, 14); setcolor(12); settextstyle(1, 0, 7); outtextxy(40, 5, good better); setcolor(15)

38、; settextstyle(3, 0, 5); outtextxy(25,80,welcoming the next); outtextxy(180,130,play,); outtextxy(120,180,thank you!); setcolor(14); settextstyle(2, 0, 15); outtextxy(60, 230, see you later.); getch();getch(); closegraph(); void initsate()/*游戲的初始化介面*/ int gdriver=detect,gmode,i; int arw10=0,240,240,

39、0,480,240,240,480,0,240; initgraph( setbkcolor(15); setcolor(15); setlinestyle(0,0,3); setfillstyle(1,2); drawpoly(5,arw); floodfill(200,200,15); setlinestyle(1,0,1); setcolor(1); for(i=0;i0.1) t1=t2;clr=0; for(i=0;i108;i+) setcolor(clrsclr); circle(x,y,m); setfillstyle(1,clrsclr); floodfill(x,y,clr

40、sclr); xor=1; if(x630 else x=x+20; xor=0; if(x=630 else x=x-20; xor=0; if(x=10 else y=y-20; xor=0; clr+;clr=clr%10; clr=clrs9; for(i=9;i0;i-) clrsi=clrsi-1; clrs0=clr; if(ch=a|ch=a|ch=w|ch=w| ch=s|ch=s|ch=d|ch=d| ch=b|ch=b|ch= ) ch=getch(); 19 void glorify2()/*游戲中的指示燈設(shè)置函數(shù)*/ int i,j; for(i=0,j=3;i4;i

41、+,j+) setcolor(j); circle(tagsi.x,tagsi.y,3*m+5); setfillstyle(1,14); floodfill(tagsi.x,tagsi.y,j); void law()/*介面的格式控制函數(shù)*/ int arw112=265,21,619,21,619,459,265,459,484,240,265,21; int arw28=21,21,215,21,21,215,21,21; int arw38=21,265,215,459,21,459,21,265; setbkcolor(15); setcolor(2); setlinestyle(

42、0,0,1); setfillstyle(1,2); drawpoly(6,arw1); drawpoly(5,arw2); drawpoly(5,arw3); line(484,21,484,459); setcolor(2); settextstyle(1,0,4); outtextxy(484,40,checkers); outtextxy(484,70,welcome); setcolor(1); settextstyle(0,0,1); outtextxy(484,205,key rules:); outtextxy(484,355,if you choice 2-4); outte

43、xtxy(484,367,game whill begin); setcolor(4); outtextxy(484,127,checkers welcome); outtextxy(484,139,to theworld war,); outtextxy(484,151,i wish you fun!); outtextxy(484,163,to introduce the); outtextxy(484,175,rules of the game); outtextxy(484,217,space:stands sure); outtextxy(484,229,a:go to the le

44、ft); outtextxy(484,241, -down); outtextxy(484,253,s:go to the right); outtextxy(484,265, -down); outtextxy(484,277,w:go to the left); outtextxy(484,289, -up); outtextxy(484,301,d:go to the right); outtextxy(484,313, -up); outtextxy(484,379,2:stands 2 person); outtextxy(484,391,3:stands 3 person); 20

45、 outtextxy(484,403,4:stands 4 person); outtextxy(484,427,b:go to back!); outtextxy(484,439,0:stands exit!); void explode(int color) /*煙花函數(shù)*/ int i,j,k,r,rnd,xc,yc,vert,ang; int shp; double cosn,sinn; typedef struct _particle int pn; float x,y; float dx,dy; particle; int fragments562=4,0,9,6,2,14,12,

46、13,9,6, 5,0,31,3,24,7,24,14,33,6,31,3, 5,0,37,10,35,16,40,17,43,11,37,10, 4,0,13,19,8,29,19,22,13,19, 5,0,29,19,23,23,28,28,31,24,29,19; particle bomb100; for(i=0;i5;i+) vert=fragmentsi00; xc=0; yc=0; for(j=1;jvert;j+) xc=xc+fragmentsij0; yc=yc+fragmentsij1; xc=xc/(vert-1); yc=yc/(vert-1); for(j=1;j

47、vert;j+) fragmentsij0=(fragmentsij0-xc)/1.5; fragmentsij1=(yc-fragmentsij1/1.5); fragmentsij0=fragmentsi10; fragmentsij1=fragmentsi11; srand(time(null); setcolor(color); for(i=0;i100;i+) rnd=rand(); if(rnd0) rnd=0; ang=rnd%360; cosn=cos(ang*pi/180.0); sinn=sin(ang*pi/180.0); bombi.dx=cosn; bombi.dy=

48、sinn; bombi.x=0; bombi.y=0; rnd=rand(); if(rnd0) rnd=0; shp=rnd%5; 21 bombi.pn=shp; rnd=rand(); if(rnd0) rnd=0; r=rnd%100+100; r=r/5; for(k=0;kr;k+) for(i=0;i100;i+) shp=bombi.pn; xc=bombi.x; yc=bombi.y; xc=250+xc; yc=250-yc; vert=fragmentsshp00; for(j=2;j=vert;j+) line(xc+fragmentsshpj-10,yc-fragme

49、ntsshpj-11, xc+fragmentsshpj0,yc-fragmentsshpj1); for(i=0;i1000;i+) for(j=0;j1000;j+); for(i=0;i100;i+) bombi.x+=bombi.dx*5; bombi.y+=bombi.dy*5; void twobattle()/*兩人戰(zhàn)控制函數(shù)*/ int i,j,k,tag=1,key=1,success1=1,success2=1; unsigned size; void *buf3; size=imagesize(20,20,40,40); for(i=0;i3;i+) bufi=mallo

50、c(size); setcolor(1); for(i=0;i=0 maze(satei.y-30)/35(satei.x-30)/35=2; else setfillstyle(1,7); maze(satei.y-30)/35(satei.x-30)/35=0; 22 circle(satei.x,satei.y,m); floodfill(satei.x,satei.y,1); setcolor(14); for(i=0,k=1;i=12;i+=12,k+) abcdk-1.x=satei.x;abcdk-1.y=satei.y; getimage(satei.x-10,satei.y-

51、10,satei.x+10,satei.y+10,bufk); circle(satei.x,satei.y,m); setcolor(1); for(i=0,k=1;i=12;i+=12,k+) circle(satei.x,satei.y,m); while(1) int r1=0,r2=0; if(back) break; for(i=12;i18;i+) if(maze(satei.y-30)/35(satei.x-30)/35=1) r1+; if(r1=6) key+; if(key=1) setcolor(15); circle(tags0.x,tags0.y,3*m+5); s

52、etfillstyle(1,3); floodfill(tags0.x,tags0.y,15); if(success2) setcolor(15); circle(tags2.x,tags2.y,3*m+5); setfillstyle(1,14); floodfill(tags2.x,tags2.y,15); setcolor(5); circle(tags2.x,tags2.y,3*m+5); key=move(abcd0.x,abcd0.y,1,buf); if(success1) for(r1=0,i=12;i18;i+) if(maze(satei.y-30)/35(satei.x

53、-30)/35=1) r1+; if(r1=6) for(k=0;k25;k+) explode(k); initsate();law();glorify2(); for(i=0;im;i+) for(j=0;jn;j+) if(mazeji=1) setcolor(1); circle(i*35+30,j*35+30,m); setfillstyle(1,3); floodfill(i*35+30,j*35+30,1); 23 if(mazeji=2) setcolor(1); circle(i*35+30,j*35+30,m); setfillstyle(1,5); floodfill(i

54、*35+30,j*35+30,1); setcolor(3); settextstyle(1,0,8); if(tag=2) outtextxy(tags0.x-17,tags0.y-47,2); setcolor(5); settextstyle(1,0,8); outtextxy(tags2.x-13,tags2.y-47,1); if(tag=1) outtextxy(tags0.x-13,tags0.y-47,1);tag+; success1=0; for(i=0;i6;i+) if(maze(satei.y-30)/35(satei.x-30)/35=2) r2+; if(r2=6

55、) key=1; if(key=2) setcolor(15); circle(tags2.x,tags2.y,3*m+5); setfillstyle(1,5); floodfill(tags2.x,tags2.y,15); if(success1) setcolor(15); circle(tags0.x,tags0.y,3*m+5); setfillstyle(1,14); floodfill(tags0.x,tags0.y,15); setcolor(3); circle(tags0.x,tags0.y,3*m+5); key=move(abcd1.x,abcd1.y,2,buf);

56、if(success2) for(r2=0,i=0;i6;i+) if(maze(satei.y-30)/35(satei.x-30)/35=2) r2+; if(r2=6) for(k=0;k25;k+) explode(k); initsate();law();glorify2(); for(i=0;im;i+) for(j=0;jn;j+) if(mazeji=1) 24 setcolor(1); circle(i*35+30,j*35+30,m); setfillstyle(1,3); floodfill(i*35+30,j*35+30,1); if(mazeji=2) setcolo

57、r(1); circle(i*35+30,j*35+30,m); setfillstyle(1,5); floodfill(i*35+30,j*35+30,1); setcolor(5); settextstyle(1,0,8); if(tag=2) outtextxy(tags2.x-17,tags2.y-47,2); setcolor(3); settextstyle(1,0,8); outtextxy(tags0.x-13,tags0.y-47,1); if(tag=1) outtextxy(tags2.x-13,tags2.y-47,1);tag+; success2=0; if(r1

58、=6 getch(); void threebattle()/*三人戰(zhàn)控制函數(shù)*/ int i,j,k,score1=0,score2=0,tag=1,key=1,success1=1,success2=1,success3=1; unsigned size; void *buf4; size=imagesize(20,20,40,40); for(i=0;i4;i+) bufi=malloc(size); setcolor(1); for(i=0,j=2,k=0;i45;i+) if(i%6=0 maze(satei.y-30)/35(satei.x-30)/35=k; setcolor(1

59、4); for(i=0,k=1;i=12;i+=6,k+) abcdk-1.x=satei.x;abcdk-1.y=satei.y; 25 getimage(satei.x-10,satei.y-10,satei.x+10,satei.y+10,bufk); circle(satei.x,satei.y,m); setcolor(1); for(i=0,k=1;i=12;i+=6,k+) circle(satei.x,satei.y,m); while(1) int r1=0,r2=0,r3=0; if(back) break; for(i=12;i18;i+) if(maze(satei.y

60、-30)/35(satei.x-30)/35=1) r1+; if(r1=6) key+; if(key=1) setcolor(15); circle(tags0.x,tags0.y,3*m+5); setfillstyle(1,3); floodfill(tags0.x,tags0.y,15); if(success3) setcolor(15); circle(tags2.x,tags2.y,3*m+5); setfillstyle(1,14); floodfill(tags2.x,tags2.y,15); setcolor(5); circle(tags2.x,tags2.y,3*m+

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(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)論