亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java的打字母游戲設(shè)計(jì)與實(shí)現(xiàn)

        2019-09-19 11:34:52伍濤蘭全祥
        電腦知識(shí)與技術(shù) 2019年20期
        關(guān)鍵詞:多線程游戲

        伍濤 蘭全祥

        摘要:為了提高Java程序設(shè)計(jì)的趣味性,切實(shí)鍛煉Java程序設(shè)計(jì)能力,實(shí)現(xiàn)了一個(gè)打字母游戲。基于Java的打字母游戲采用Java的圖形圖像技術(shù)、鍵盤監(jiān)聽、多線程以及JDBC等技術(shù)實(shí)現(xiàn)了難度設(shè)置、排行榜、分?jǐn)?shù)存儲(chǔ)等功能。對(duì)打字母游戲進(jìn)行了功能設(shè)計(jì)與分析,詳細(xì)介紹了各個(gè)功能模塊的實(shí)現(xiàn)。該游戲能提高Java編程的趣味性,還能在Java事件處理、多線程、JDBC以及Java Swing等知識(shí)的教學(xué)中起到一定的輔助作用,促進(jìn)學(xué)生學(xué)習(xí)積極性。

        關(guān)鍵詞:打字母;JDBC;多線程;游戲;事件處理

        中圖分類號(hào):TP311.1? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A

        文章編號(hào):1009-3044(2019)20-0087-03

        開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):

        1 背景

        打字母游戲一款休閑益智小游戲,玩家通過鍵盤點(diǎn)擊相應(yīng)按鈕消除界面中對(duì)應(yīng)的下落字母。游戲規(guī)則如下:當(dāng)玩家鍵入的字符與下落字母一致,則消除該字母,并且積分加1;若不一致,則下落字母不消除;若下落字母未被消除,且落出界面,則積分減1。當(dāng)玩家游戲時(shí)間為0(默認(rèn)為100s)或者分?jǐn)?shù)扣減為0(默認(rèn)為50分),則游戲結(jié)束。

        開發(fā)人員可以通過Java提供的java.awt包、java.swing包來進(jìn)行圖形界面設(shè)計(jì)[1]。本游戲在Java Swing 的基礎(chǔ)上,利用Java的圖形化界面和圖形圖像繪制來實(shí)現(xiàn)游戲界面、字母、積分以及時(shí)間的繪制,使用鍵盤監(jiān)聽來實(shí)現(xiàn)玩家操作監(jiān)聽,使用多線程技術(shù)實(shí)現(xiàn)字母下落和計(jì)時(shí),使用JDBC[2]來存儲(chǔ)玩家積分和排行榜功能。

        2 總體設(shè)計(jì)

        2.1 功能設(shè)計(jì)

        通過對(duì)打字母游戲的游戲規(guī)則進(jìn)行分析,將實(shí)現(xiàn)如圖1所示功能。

        1)開始游戲

        點(diǎn)擊開始游戲之后,啟動(dòng)游戲窗口。游戲進(jìn)行初始化,隨機(jī)生成n個(gè)字母,并隨時(shí)監(jiān)聽玩家輸入。使用多線程進(jìn)行窗口重繪以及倒計(jì)時(shí)。

        2)排行榜

        在游戲開始之前,玩家可以查看排行榜;在游戲結(jié)束之后,玩家輸入自己的名字并查看排行榜。排行榜中的數(shù)據(jù)通過JDBC從數(shù)據(jù)庫中進(jìn)行讀取會(huì)繪制在窗口中。

        3)難度設(shè)置

        玩家可以通過數(shù)遍選擇不同的難度。游戲難度分為高級(jí)(每次下落15個(gè)字母)、中級(jí)(每次下落10個(gè)字母)、初級(jí)(每次下落5個(gè)字母)三個(gè)級(jí)別。玩家也可以通過輸入字母下落個(gè)數(shù)自定義游戲難度。

        4)退出游戲

        點(diǎn)擊界面中退出游戲按鈕或窗口上的關(guān)閉按鈕可以退出游戲。

        2.2 數(shù)據(jù)庫設(shè)計(jì)

        本游戲使用MySQL數(shù)據(jù)庫對(duì)玩家分?jǐn)?shù)進(jìn)行存儲(chǔ)。在MySQL數(shù)據(jù)庫中建立數(shù)據(jù)庫Game,并在該數(shù)據(jù)庫中建立player表,用于存儲(chǔ)玩家信息,數(shù)據(jù)表信息如表1所示。

        2.3 結(jié)構(gòu)設(shè)計(jì)

        通過對(duì)游戲功能模塊進(jìn)行分析,對(duì)游戲所需對(duì)象進(jìn)行抽象和封裝,有如圖2所示類圖。

        3 游戲?qū)崿F(xiàn)

        3.1 游戲初始界面

        游戲初始化階段將生成游戲初始界面。該界面中添加了分別是開始游戲、排行榜、難度選擇、退出游戲四個(gè)按鈕,并為每個(gè)按鈕設(shè)置監(jiān)聽事件。玩家通過點(diǎn)擊相應(yīng)按鈕進(jìn)行不同的功能操作。

        3.2 游戲難度設(shè)置

        玩家通過點(diǎn)擊初始界面中的難度設(shè)置,進(jìn)入難度選擇界面。該界面中添加四個(gè)按鈕,分別為高級(jí)、中級(jí)、初級(jí)和自定義,并為每個(gè)按鈕設(shè)置監(jiān)聽事件。當(dāng)玩家點(diǎn)擊前三個(gè)按鈕時(shí),程序會(huì)將默認(rèn)值傳給ballCount;當(dāng)用戶點(diǎn)擊自定義時(shí)游戲,將會(huì)顯示一個(gè)輸入框供玩家出入字母個(gè)數(shù),并將值傳給ballCount。游戲開始后,程序?qū)⒏鶕?jù)ballCount的值生成字母個(gè)數(shù)。代碼如下:

        3.3.3 字母下落

        CharPanel類通過Runnable接口中的run()方法執(zhí)行Thread.sleep(30)來控制重繪時(shí)間。run()方法每隔30毫秒執(zhí)行一次repaint()方法,每執(zhí)行一次該方法中字母的y坐標(biāo)值加上speed(初始值為1),從而實(shí)現(xiàn)字母下落效果[3]。另外,設(shè)置計(jì)數(shù)器count,每調(diào)用一次paint()方法,則count加1;當(dāng)count=5000時(shí),speed加1,并將count置為0,從而實(shí)現(xiàn)字母加速下落。代碼如下:

        3.3.4 消除字母并計(jì)分

        在字母向下落的過程中,通過對(duì)游戲窗口進(jìn)行鍵盤監(jiān)聽[4]實(shí)現(xiàn)按鍵消除字母功能。當(dāng)監(jiān)聽到鍵盤事件時(shí),CharPanel.count值加1,然后判斷匹配下落字母是否包含玩家鍵入字母,若包含則對(duì)應(yīng)的下落字母消失,并重新生成該字母的坐標(biāo)值(其中x值為1-500內(nèi)的隨機(jī)值,y值為零)和內(nèi)容(隨機(jī)生成),同時(shí)right值和score值加1。當(dāng)下落字母中出現(xiàn)多個(gè)相同字母時(shí),消除最下面的字母。代碼實(shí)現(xiàn)如下:

        3.3.5 排行榜

        當(dāng)游戲結(jié)束之后,將顯示一個(gè)輸入框供玩家輸入姓名。定義一個(gè)玩家信息類User,游戲結(jié)束后程序?qū)@取當(dāng)前游戲分?jǐn)?shù)、正確數(shù)right、總數(shù)count與玩家姓名,并通過UserDao類的接口將數(shù)據(jù)存入數(shù)據(jù)庫中[5]。代碼實(shí)現(xiàn)如下:

        當(dāng)用戶點(diǎn)擊排行榜進(jìn)行查看時(shí),程序通過SQL查詢語句,將數(shù)據(jù)庫中的信息讀出,然后使用Graphics重寫paint方法繪制在界面上,排行榜效果圖如圖5所示。

        4 結(jié)束語

        基于Java的打字母游戲設(shè)計(jì)與實(shí)現(xiàn)使用了Java的鍵盤監(jiān)聽、鼠標(biāo)點(diǎn)擊、圖形化界面和圖形圖像繪制、多線程以及JDBC等知識(shí),實(shí)現(xiàn)了難度設(shè)置、排行榜、分?jǐn)?shù)存儲(chǔ)等功能。

        參考文獻(xiàn):

        [1] 茍雨晴, 蘭全祥. 基于Java的拼圖游戲設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2019,15(2): 45-47.

        [2] 楊廷發(fā), 蘭全祥. 基于問題解決的JDBC教學(xué)方法改革和探討[J]. 赤峰學(xué)院學(xué)報(bào): 自然科學(xué)版,2018, 34(12):148-151.

        [3] 張會(huì). 基于Java的指法練習(xí)小游戲的設(shè)計(jì)與實(shí)現(xiàn)[J]. 電腦知識(shí)與技術(shù), 2017,13(32):85-86, 96.

        [4] 潘國榮. Java中的常見事件及處理探究[J]. 電腦知識(shí)與技術(shù), 2018, 14(29):125-126, 131.

        [5] 胡蕊蕊. Java Web程序運(yùn)用中泛型DAO的作用[J]. 電子測試, 2017(4):46,49.

        【通聯(lián)編輯:謝媛媛】

        猜你喜歡
        多線程游戲
        游戲
        Java并發(fā)工具包對(duì)并發(fā)編程的優(yōu)化
        數(shù)獨(dú)游戲
        瘋狂的游戲
        飛碟探索(2016年11期)2016-11-14 19:34:47
        基于多線程文件傳輸關(guān)鍵技術(shù)研究與實(shí)現(xiàn)
        爆笑游戲
        網(wǎng)頁爬蟲技術(shù)的關(guān)鍵技術(shù)研究探索
        一種基于多線程的高速磁盤鏡像算法
        iOS并發(fā)程序設(shè)計(jì)中幾種方法的特點(diǎn)及使用技巧研究
        電站鍋爐煤粉參數(shù)遠(yuǎn)程監(jiān)控系統(tǒng)的軟件設(shè)計(jì)與實(shí)現(xiàn)
        国产真实乱对白精彩久久老熟妇女 | 香港三级午夜理论三级| 国产人妻精品无码av在线| 日本不卡在线视频二区三区| 日韩夜夜高潮夜夜爽无码| 久久精品国产精品国产精品污| 一本色道久久综合狠狠躁| 国产午夜成人久久无码一区二区| 色窝综合网| 91精品蜜桃熟女一区二区| 日韩人妻美乳中文字幕在线| 与漂亮的女邻居少妇好爽| 国产精品久久成人网站| 午夜成人理论无码电影在线播放 | 久久综合噜噜激激的五月天| 国产成人久久精品一区二区三区| 久久精品无码免费不卡| 久久久久久久综合日本| 亚洲av中文aⅴ无码av不卡| 免费黄网站一区二区三区| 肥老熟女性强欲五十路| 亚洲精品无码久久久影院相关影片| 成人免费毛片内射美女-百度| 黄色录像成人播放免费99网| 国产日本精品一区二区| 青青草国产在线视频自拍| 少妇被爽到高潮喷水久久欧美精品| 男同gay毛片免费可播放| 女同av在线观看网站| 成年女人午夜特黄特色毛片免 | 国产极品女主播国产区| 品色永久免费| 天堂√最新版中文在线天堂| 蜜桃av无码免费看永久| 人妻少妇被猛烈进入中文| 国产亚洲欧美精品永久| 精品亚洲一区二区三区在线观看 | 亚洲国产一区二区三区亚瑟| 男人的av天堂狠狠操| 国产伦一区二区三区久久| 日本一区二区不卡精品|