Java 面向对象程序设计 消息、继承与多态实验 课程设计研究报告

news2024/11/19 23:21:21

代码:Java计算机课程设计面向对象程序设计对战游戏SwingGUI界面-Java文档类资源-CSDN文库

 

一、课程设计内容

一个游戏中有多种角色(Character),例如:国王(King)、皇后(Queen)、骑士(Knight)、老怪(Troll)。

 角色之间可能要发生战斗(fight),每场战斗都是一个角色与另一角色之间的一对一战斗。每个角色都有自己的生命值(hitPoint)、魔法值(magicPoint)、攻击力值(damage)和防御力值(defense)。

每种角色都有一种武器进行攻击(fight);在程序运行中,可以动态修改角色的武器(setWeaponBehavior)。

每种角色都有一种魔法对自己或者其他角色施法(performMagic);可以动态改变拥有的魔法(setMagicBehavior)。

二、技术路线

1)首先设计和实现抽象类Characters,其中:

Characters中的display方式是抽象方法。publicvoidfight(Charactersc)完成本角色攻击角色c的操作。

2)设计和实现Character类的几个子类:King、Queen、Knight、Troll。3)设计接口WeaponBehavior和MagicBehavior。并编写以下类的代码:

a)接口WeaponBehavior的实现类:KnifeBehavior(用刀)、BowAndArrowBehavior(用弓箭)、AxeBehavior(用斧)、SwordBehavior(用剑);实现接口中的抽象方法,结合生命值(hitPoint)、攻击力值(damage)和防御力值(defense)计算。

b)接口MagicBehavior的实现类:HealBehavior(治疗)、InvisibleBehavior(隐身)。结合生命值(hitPoint)、魔法值(magicPoint)、攻击力值(damage)和防御力值(defense)计算。

三、设计与实现

使用NetBeans IDE,。角色的初始攻击力和魔法值都为0,装备不同的武器后获得不同的攻击力,魔法值由选择的魔法决定。每个角色拥有不同的生命值和防御力,攻击造成的伤害为进攻方的攻击力减去被攻击方的防御力。治疗法术作用是恢复等同于魔法值的攻击力,隐身法术则是保护自己不受到武器攻击的伤害。

【特色】增加了一种角色Thief(小偷)。

四、测试与结果

可以实现所有功能

五、感想和体会

通过这次实验,我掌握了Java面向对象程序设计的基本思想,理解并学会运用消息、继承、多态、接口、抽象类和抽象方法等概念和实现方式;掌握了Java程序设计中的基本语法和Java程序运行方法等,并对Netbeans的使用更加熟悉了。

六、要求的编译、运行、生成帮助文档的命令

1.编译

cd E:\demo\src

javac -d ../bin xx\demo\StrategyDemo.java -encoding utf-8

2.运行

java xx.demo.StrategyDemo -Dfile.encoding=utf-8

3.生成帮助文档

cd E:\demo\src

javadoc -d ../doc xx.behavior xx.character xx.demo -encoding utf-8

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/163191.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Linux多线程】

Linux多线程Linux线程概念什么是线程线程的优点线程的缺点线程异常线程用途Linux进程VS线程进程和线程进程的多个线程共享Linux线程控制POSIX线程库线程创建线程等待线程终止分离线程线程ID及进程地址空间布局Linux线程概念 什么是线程 在一个程序里的一个执行路线就叫做线程…

JavaScript 如何正确的分析报错信息

文章目录前言一、报错类型1.控制台报错2.终端报错二、错误追查总结前言 摸爬滚打了这么长时间…总结了一些排查错误的经验, 总的来说, 这是一篇JavaScript新手向文章. 里面会有些不那么系统性的, 呃, 知识? 一、报错类型 报错信息该怎么看, 怎么根据信息快速的追查错误. 1.…

瑞吉外卖项目

技术选型: 1、JAVA版本:JDK11 2、数据库:mysql5.7 Navicat 3、后端框架:SpringBoot SpringMVC MyBatisPlus 4、工具类:发邮件工具类、生成验证码工具类 5、项目优化:Nginx、Redis、读写分离 项目来…

2022. 12 青少年机器人技术等级考试理论综合试卷(五级)

2022.年12月青少年机器人技术等级考试理论综合试卷(五级) 分数: 100 题数: 30 一、 单选题(共 20 题, 共 80 分) 1.下列程序执行后,串口监视器显示的相应内容是? ( ) A.1 B.2 C.4 D.…

WPF绑定(Binding)下的数据验证IDataErrorInfo

绑定下的数据验证 WPF中Binding数据校验、并捕获异常信息的三种方式讲到了三种方式,其中使用ValidatinRule的方式比较推荐,但是如果一个类中有多个属性,要为每个属性都要声明一个ValidatinRule,这样做非常麻烦。可以让类继承自ID…

【High 翻天】Higer-order Networks with Battiston Federico (8)

目录传播与社会动力学(2)Opinion and cultural dynamicsVoter modelMajority modelsContinuous models of opinion dynamicsCultural dynamics传播与社会动力学(2) 在本节将讨论一些观点和文化动力学模型,它们基于物理…

【JavaSE】反射

一、概念反射是在运行期间,动态获取对象的属性和方法二、相关的类在Java的反射里主要有以下几个类:Class类,这是反射的起源,反射必须要先获取Class对象,其次是Field类,当我们需要通过反射获取私有字段时就需…

老杨说运维 | 2023,浅谈智能运维趋势(一)

(文末附视频回顾,一键直达精彩内容) 前言: 2022年,是经济被影响的一年,这一年无论是企业还是个人经济形势都呈下滑趋势,消费降级状态或许不会因为2022的结束而改观。 全球经济紧缩的状态下&am…

不仅会编程还要会英语(博主英语小笔记)1.1名词

目录 1-1名词的概念和分类 1、名词的概念 2.名词根据其意义可以分为专有名词和普通名词 (1)专有名词: (2)普通名词: 1-1名词的概念和分类 1、名词的概念 名词是表示人、动物、地点、物品以…

字符串常用函数介绍及模拟实现

🐎作者的话 本文介绍字符串常用的函数如何使用及其模拟实现~ 跳跃式目录strlen介绍strcpy介绍strcat介绍strcmp介绍strncpy介绍strncat介绍strncmp介绍strstr介绍strchr介绍strrchr介绍memcpy介绍memmove介绍memcmp介绍memset介绍strtok介绍strlen介绍 函数原型&…

GO语言配置和基础语法应用(二)

Go 语言结构 在我们开始学习 Go 编程语言的基础构建模块前,让我们先来了解 Go 语言最简单程序的结构。 Go Hello World 实例 Go 语言的基础组成有以下几个部分: 包声明引入包函数变量语句 & 表达式注释 接下来让我们来看下简单的代码 package ma…

Allegro如何导出placement操作指导

Allegro如何导出placement操作指导 在做PCB布局的时候,有时需要导出和导入Placement,placement文件是板上所有器件的坐标以及所在层面的文件 具体操作如下 导出placement文件,选择File

实现用户进程

文章目录前言前置知识实验操作实验一实验二前言 博客记录《操作系统真象还原》第十一章实验的操作~ 实验环境:ubuntu18.04VMware , Bochs下载安装 实验内容: 定义并初始化 TSS。实现用户进程。 前置知识 TSS 简介 TSS,即 Tas…

time和datetime之类的东西

这篇文章是学习数据可视化的记录,原视频链接 B站视频连接 time 先来看一张图 struct_time(时间元组)是作为时间戳和格式化后的字符串的桥梁的 mktime(t)是将指定时间元组转换为时间戳的 localtime()是将指定时间戳转换为时间元组的,可以不写时间戳&…

【一文教你学会动态内存管理】

1.为什么会存在动态内存分配? 2. 动态内存函数的介绍 2.1 malloc函数和free函数 2.2 calloc函数 2.3 realloc 3. 常见的动态内存错误 3.1 对NULL指针的解引用操作 3.2 对动态开辟空间的越界访问 3.3 对非动态开辟内存使用free释放 3.4 使用free释放一块动态开…

Uniswap v3 详解(一):设计原理

刚看完 Uniswap v2 的代码,本来打算写一个 Uniswap v2 设计与实现,结果 Uniswap v3 就发布了。趁着这个机会就先写一个 Uniswap v3 设计与实现吧。 因为 v3 版本的实现复杂度和 v2 已经不在一个量级了,难免会有理解上的偏差,本文…

ESP8266-01s+STM32+MQTT+ONNET+EMQX实现定时发送心跳包并配置MQTT断开连接后进行重连

目录:1.情况介绍2.发送心跳包和MQTT重连实现步骤3.运行效果1.情况介绍 硬件通过ESP8266-01s连接自己的MQTT服务器EMQX的时候,发现连上后没过多久就自动断开了,由于硬件代码使用的是ONNET的案例代码改的,所以发现该案例代码并没有发送心跳包和…

测试篇(一):需求、BUG、测试用例、开发模型和测试模型、配置管理和软件测试

目录一、什么是需求1.1 需求的概念1.2 用户需求1.3 软件需求二、什么是测试用例2.1 测试用例的概念三、什么是BUG3.1 BUG(软件错误)的概念四、开发模型4.1 软件生命周期4.2 瀑布模型4.3 螺旋模型4.4 增量、迭代模型4.5 敏捷模型五、测试模型5.1 软件测试V模型5.2 软件测试W模型…

(详细简单成功版本)Mysql主从复制

博主不易,如果有帮助点个赞加个关注再走啊家人们 目录 介绍 配置-前置条件 大坑:如果两份mysql文件都是复制的一份,那么就修改其中一份的uuid,要不后续配置不成功 配置-主库Master 1.修改Mysql数据库的配置文件my.ini 2.重启…

mysql快速生成100W条测试数据(6)地区天气情况并存入mysql数据库

这是之前的文章里面包含一些以前的一些操作流程可以进行参考学习 更加详细操作步骤在第一篇文章里面 mysql快速生成100W条测试数据(1):游戏人物数据 mysql快速生成100W条测试数据(2)公司员工信息 mysql快速生成100W条测…