中国象棋总体设计 中国象棋课设02
?本節重點:
1.了解中國象棋棋盤總體設計
聲明:
以下內容僅供學習,如有侵權,聯系作者刪除。
本人在Java多線程領域屬于萌新,所以課設是參考了視頻中項目,也是我學習Java的重要一環
參考視頻出處:手把手2000行代碼完成Java象棋對弈系統1--界面顯示_嗶哩嗶哩_bilibilihttps://www.bilibili.com/video/BV1Ct4y1q7mo?spm_id_from=333.1007.top_right_bar_window_default_collection.content.click&vd_source=4b715aa54ae1ea1f411de9964f09bdd5
整體思路設計:
? ? ? ? 在完成對總體的初步設計,對系統的整體框架和模型有了初步了解后,再進行對系統的詳細規劃設計,就是對概要設計的細化,就是詳細設計每個模塊實現算法,所需的局部結構。在該階段,主要是通過需求分析的結果,設計出滿足需求的軟件系統。
? ? ? ? 而在本文中所設計的象棋對戰小游戲中,重點為象棋棋子符合規則的移動和吃子的模塊,對象棋棋盤和棋子建立相應的抽象存儲模型,也就是設計好不同的類來方便對棋盤、棋子等進行存儲和管理。
? ? ?本象棋小游戲系統主要分為chess、chessRegret、chessManBehavior、chessRule和chessMainFrame共五個模塊來實現本系統。chess類作為程序的入口開始程序的運行;chessMainFrame是對弈程序的主界面類,顯示棋盤、棋子和閃爍的要行走的棋子;chessRule類是規定棋子的運動規則和吃子規則;chessManBehavior類是對棋子的行為描述,如播放聲音等;chessRegret類是用來記錄棋子的行走,作為悔棋使用。
開局判定:
當玩家運行系統后,系統開始運行游戲開始,玩家可以開始進行下棋,其間任意玩家可以選擇悔棋,在玩家雙方分出勝負后,判定一方玩家勝利,可以選擇開始新一輪游戲或者選擇退出游戲,系統運行結束。
重置函數:
重置函數根據i與k值的不同來區分不同棋子,i區分紅黑方、k來判斷棋子的種類。 具體代碼如下: public void chessReset(){int i,k;for (i=0,k=24;i<2;i++,k+=456){play[i].setBounds(k,56,55,55);}for (i=4,k=81;i<6;i++,k+=342){play[i].setBounds(k,56,55,55);}for (i=8,k=138;i<10;i++,k+=228){play[i].setBounds(k,56,55,55);}for (i=12,k=195;i<14;i++,k+=114){play[i].setBounds(k,56,55,55);}for (i=16,k=24;i<21;i++,k+=114){play[i].setBounds(k,227,55,55);}for (i=26,k=81;i<28;i++,k+=342){play[i].setBounds(k,170,55,55);}play[30].setBounds(252,56,55,55);//紅方初始化顯示for (i=2,k=24;i<4;i++,k+=456){play[i].setBounds(k,569,55,55);}for (i=6,k=81;i<8;i++,k+=342){play[i].setBounds(k,569,55,55);}for (i=10,k=138;i<12;i++,k+=228){play[i].setBounds(k,569,55,55);}for (i=14,k=195;i<16;i++,k+=114){play[i].setBounds(k,569,55,55);}for (i=21,k=24;i<26;i++,k+=114){play[i].setBounds(k,398,55,55);}for (i=28,k=81;i<30;i++,k+=342){play[i].setBounds(k,455,55,55);}play[31].setBounds(252,569,55,55);for (i=0;i<32;i++){System.out.println(i+""+play[i].getName());}gameIsOver=false;for(i=0;i<32;i++){play[i].setVisible(true);play[i].died=false;}text.setText(" 紅棋走棋");chessPlayClick=2;Man=-1;regretList.clear();//清空悔棋Listrepent.setEnabled(true); }初始函數:這里主要以顯示圖片為主
以黑車代碼為例: //顯示黑方棋子 in=new ImageIcon("image/黑車.gif"); for(i=0,k=24;i<2;i++,k+=456){play[i]=new ChessManBehavior(in);play[i].setBounds(k,56,55,55);play[i].setName("車1"); }棋子選中時閃爍問題:
public synchronized void run() {//實現棋子閃爍問題,就是實現其周期性顯示問題 2022.5.26while(true){if(chessmanClick){play[Man].setVisible(false);//讓選中棋子不可見try{tmain.sleep(200);}catch (Exception e){e.printStackTrace();}//讓選中棋子可見play[Man].setVisible((true));//保證棋子存活的情況下顯示操作for(int i=0;i<32;i++){if(i!=Man&&play[i].died==false){play[i].setVisible(true);}}}//走完后文本提示else{text.setVisible(false);try{tmain.sleep(250);}catch(Exception e){e.printStackTrace();}text.setVisible(true);}try{tmain.sleep(350);}catch (Exception e){e.printStackTrace();}}} }總結
以上是生活随笔為你收集整理的中国象棋总体设计 中国象棋课设02的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 与众不同 独树一帜,传智播客2018春季
- 下一篇: 【Mysql数据库 第10章】MySQL