本节重点:

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相关推荐

  1. 跨国企业在中国 | 通济隆在上海设新亚太总部;劳氏船级社战略合作中国石油安全环保研究院...

    摘要 山姆会员商店.麦德龙.星巴克.盖璞.爱马仕.菲仕兰.BD.默克.卫材.阿斯利康.劳氏船级社.日立.德纳.拜耳.万豪国际.通济隆.Visa等跨国企业在中国业务发展最新资讯. 金融与保险 通济隆在上 ...

  2. Java毕业课设项目名称

    Java毕业课设项目名称 毕业设计题目 1 网上校友录设计 2 辅导员之家网站设计与开发 3 B/S结构下的OA流程可视化的研究与实现 4 B2C的电子商务系统(J2EE) 5 C/S架构的在线开始系 ...

  3. 蜘蛛纸牌(Java)课设

    文章目录 摘要 1绪论 1.1编写目的 1.2系统分析与设计 1.3小组分工 2详细设计 2.1程序功能介绍 2.2程序流程 3功能分析 3.1主要界面 3.2 初始化纸牌及发牌操作 3.3纸牌移动放 ...

  4. C/C++程序设计课设题[2023-05-20]

    C/C++程序设计课设题[2023-05-20] ATM仿真系统-薛景 背单词-叶水仙-理科实验班 电信优惠套餐推荐系统的设计与实现-朱立华-通信工程 多媒体文件管理及检索系统-刘林峰-广播电视工程 ...

  5. 大学课设之Mysql图书管理设计

    大学课设之Mysql图书管理设计 需求分析 概念结构设计-总E-R图 逻辑结构设计 数据库的实现 触发器重点说明 完整的Mysql设计代码 需求分析 改图书管理涉及书本的信息,读者的信息,图书馆管理员 ...

  6. RISC-V CPU课程设计报告【计算机组成原理课设】

    博主在ujs大二完成的计算机组成原理课设,内容是RISC-V CPU设计.(当时也是做的快吐血了~~) 完成情况(写在前面) 在本次计算机组成原理课程设计中,我完成一个基于RISC-V指令集架构的模型 ...

  7. 数据结构课设_网页形式的景区导游

    一.前言 欢迎大家来到这里~~ 1.这次数据结构课设,笔者的题目是网页形式的导航系统. 2.数据结构方面应用了链表存储商品信息.图来存储景点和路径信息.在图的广度优先中还用到了队列: 3.具体的算法有 ...

  8. 计算机课程计算奇数,计算机网络课设计算校验和讲解

    <计算机网络课设计算校验和讲解>由会员分享,可在线阅读,更多相关<计算机网络课设计算校验和讲解(31页珍藏版)>请在人人文库网上搜索. 1.沈阳理工大学课程设计专用纸Noi学生 ...

  9. 计算机网路络课设_学生宿舍网络规划与设计

    xxx大学学生宿舍网络规划与设计 摘 要 目 录 1 前 言 2 案例描述 3 项目分析 3.1 需求分析 3.1.1 网络主干线需求分析 3.1.2 网络系统的设计原则 3.2 可行性分析 3.2. ...

最新文章

  1. dos环境下mysql的访问_MYSQL dos环境下使用
  2. 确认!语音识别大牛Daniel Povey将入职小米,曾遭霍普金斯大学解雇,怒拒Facebook
  3. linux I/O--IO原理和几种零拷贝机制(五)
  4. 基于visual Studio2013解决C语言竞赛题之0502最小数替换
  5. android pptx mime类型,application/vnd.android.package-archive是Apk的MIME类型
  6. python端口与c的区别_Python和C区别该如何理解?如何适应这种区别?
  7. 解决新版chrome跨域问题:cookie丢失以及samesite属性问题
  8. Ping++中的AlipaySDK和AlicloudUTDID冲突解决方案
  9. 大型交通流仿真平台——Matsim中文使用手册05
  10. 计算机二级模拟系统在线,计算机二级foxbase题库系统
  11. 某公司电子商务网站策划方案
  12. 邮件服务器搭建 iredmail
  13. kubuntu与ubuntu切换
  14. [《所遇随心》偶感小记]2012年8月28日
  15. SQL server 语句删除部分数据
  16. 快速搭建微信小程序第三方平台基础教程(一)第三方平台是做什么的
  17. Mysql常见的几种安装失败的问题:
  18. cookie、seesionStorage、localStoreg的区别
  19. 我让Chat GPT准备了几份SAP 顾问英文面试自我介绍的模板,大家感受一下
  20. Using the Mega API, with PHP examples!

热门文章

  1. 一篇文章带你玩转C语言基础语法5:条件判断 if else 语句与分支 。(千字总结)
  2. python学习笔记项目_python第三方库之Django学习笔记一
  3. 【Verilog数字系统设计——完成如下公式所表示的逻辑功能模块】
  4. c1语言水平要多久,「西班牙留学」零基础到西班牙读语言,多久能到C1?
  5. 如何在 Ubuntu 和其他 Linux 发行版中启动、停止和重启服务
  6. 14.嵌入式控制器EC实战 SMBus读取电池信息并控制充放电
  7. 最短路径(加权有向图)
  8. 明明都保意外,定期寿险和意外险到底区别在哪里?
  9. 从黑产情报角度看风控对抗的变化
  10. android 7.0 漏洞利用,谷歌 Android 移动操作系统中的零日漏洞被攻击者利用