首页 > 其他分享 >项目说明

项目说明

时间:2023-10-01 20:34:43浏览次数:41  
标签:java 游戏 项目 网格 玩家 说明 checkGameWinner 平局

总结

在这个项目中,你需要完成一个井字游戏代码。可以在此处下载游戏 GUI 和计算机逻辑的源代码。虽然可以马上开始编译和玩游戏,但代码并不完整,因为游戏永远都不会检测到获胜者!

游戏规则

井字游戏是一款 2 个人玩的棋盘游戏。一个玩家用 X,另一个玩家用 O。游戏从 9 个空网格 (3x3) 开始。玩家轮流用 X 或 O 来标记每一个网格。X 玩家的目标是在一条垂直、水平或对角线上获得 3 个 X。而 O 玩家的目标是在一条垂直、水平或对角线上获得 3 个 O。

X 通过形成直角线而获胜

O 通过形成水平线而获胜

形成一条线后游戏结束,形成这条线的玩家获胜!

有时也没有获胜者。如果所有网格都被填满,但仍没有出现 3 个 X 或 3 个 O 成一条线的情况,就没有获胜者。这种情况经常发生,尤其是当双方都是高手时。在这种情况下,游戏以平局结束。

游戏以平局结束

代码设计

源代码包括 2 个主 Java 文件,Game.java 和 GameUI.java

  1. Game.java 是保存所有游戏逻辑代码的文件。
  2. GameUI.java 是保存所有用户界面代码的文件。如果愿意,也可以看一下 GameUI.java。不过不需要更改任何代码也可以完成项目。

你的任务是在 Game.java 文件中实现 checkGameWinner() 函数。

字符串 checkGameWinner (char [][] grid) 的输入参数是一个二维字符数组,表示游戏网格(详见下图),会返回一个字符串消息,表明谁赢了游戏(X 赢、O 赢、平局或由于游戏没有结束,尚无结果)。

doChecks() 是玩家每次轮流时,另一个负责调用 checkGameWinner 的函数,因此不用担心将该函数添加到程序的其余部分,该函数已经处理好了。

Grid 以二维字符数组表示,索引如下:

二维数组索引

要求

在 checkGameWinner() 中,你需要访问二维数组中的这些网格,通过检查是否有 3 个相同的 X 或 O 形成一条水平、垂直或对角线,了解 X 或 O 是否赢得了游戏。

  1. 如果你发现某人赢了,根据获胜的玩家将变量结果设置为 “X 赢” 或 “O 赢”。
  2. 如果游戏以平局结束,那么将结果设为“平局”。
  3. 如果游戏还没有结束,结果就是“无”。

然后确保结束时函数返回该变量结果(如果发现谁赢得了比赛或出现平局,也可以直接返回字符串字面量)。

如果需要,还可以创建和使用额外的函数,但是没有必要这样做。

一定要通过多次玩这个游戏,产生不同的结果(X 赢、O 赢、平局)来测试代码。如果发现错误,请记住,可以使用 IntelliJ 中的调试功能来修正错误。

 

 


转载链接:

https://learn.udacity.com/courses/ud282/lessons/5c13f85e-b69a-438a-8045-ac4a15f16e7d/concepts/dc2afd56-4ffb-45db-914f-80878a8742e6

 

   

标签:java,游戏,项目,网格,玩家,说明,checkGameWinner,平局
From: https://www.cnblogs.com/xumeng2022/p/17739224.html

相关文章

  • git远程空仓库创建以及本地项目关联远程仓库
    远程服务器上创建空仓库远程服务器:进入git仓库目录:cd/home/gitmkdirjava-test.gitcdjava-test.gitgitinit--barechown-Rgit:gitjava-test.git本地项目:cd 项目目录gitinitgitcheckout-b develop在项目里面,添加readme.md写一点内容gitadd.gitcommit......
  • C#/.NET/.NET Core优秀项目和框架2023年9月简报
    前言公众号每月定期推广和分享的C#/.NET/.NETCore优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排......
  • 使用 Gradle:将项目代码导入 IntelliJ
    1.将项目导入IntelliJ打开IntelliJ,如果还打开了其他程序,请关闭它们,再次进入欢迎屏幕。这次,不选择“创建新项目”,而是选择导入项目(ImportProject)。点击导入项目(ImportProject)后,会弹出一个窗口,提示你从某个文件夹导入项目。转到保存ud282-master的文件......
  • uniapp项目实践总结(二十五)苹果 ios 平台 APP 打包教程
    导语:当你的应用程序开发完成后,在上架ios应用商店之前,需要进行打包操作,下面就简单介绍一下打包方法。目录准备工作注册账号生成证书打包配置准备工作在打包之前,请保证你的uniapp应用程序编译到ios模拟器或者是真机调试基座环境下是可以正常运行的,苹果打包的过程比......
  • 德勤制造业大数据项目之产品主数据蓝图方案 P112
    当今企业,尤其是大型企业,往往拥有数百个独立的应用程序和系统,跨组织、跨部门的数据很容易变得支离破碎、重复、以及不能及时更新。发生这种情况时,准确回答一些企业关心的基本问题都会变得很痛苦:例如“谁是我们最赚钱的客户?”“什么产品的利润率最高?”,甚至“我们有多少员工”?都会变......
  • Llama2-Chinese项目:2.3-预训练使用QA还是Text数据集?
      Llama2-Chinese项目给出pretrain的data为QA数据格式,可能会有疑问pretrain不应该是Text数据格式吗?而在Chinese-LLaMA-Alpaca-2和open-llama2预训练使用的LoRA技术,给出pretrain的data为Text数据格式。所以推测应该pretrain时QA和Text数据格式都应该支持。然后马上就会有一个疑问......
  • Llama2-Chinese项目:3.1-全量参数微调
      提供LoRA微调和全量参数微调代码,训练数据为data/train_sft.csv,验证数据为data/dev_sft.csv,数据格式如下所示:"<s>Human: "+问题+"\n</s><s>Assistant: "+答案  举个例子,如下所示:<s>Human: 用一句话描述地球为什么是独一无二的。</s><s>Assistant: 因为地球是目前为止......
  • Llama2-Chinese项目:2.1-Atom-7B预训练
    虽然Llama2的预训练数据相对于第一代LLaMA扩大了一倍,但是中文预训练数据的比例依然非常少,仅占0.13%,这也导致了原始Llama2的中文能力较弱。为了能够提升模型的中文能力,可以采用微调和预训练两种路径,其中:微调需要的算力资源少,能够快速实现一个中文Llama的雏形。但缺点也显而易见,只......
  • Llama2-Chinese项目:1-项目介绍和模型推理
    Atom-7B与Llama2间的关系:Atom-7B是基于Llama2进行中文预训练的开源大模型。为什么叫原子呢?因为原子生万物,Llama中文社区希望原子大模型未来可以成为构建AI世界的基础单位。目前社区发布了6个模型,如下所示:FlagAlpha/Atom-7BFlagAlpha/Llama2-Chinese-7b-ChatFlagAlpha/Llama2-Ch......
  • Llama2-Chinese项目:2.2-大语言模型词表扩充
    因为原生LLaMA对中文的支持很弱,一个中文汉子往往被切分成多个token,因此需要对其进行中文词表扩展。思路通常是在中文语料库上训练一个中文tokenizer模型,然后将中文tokenizer与LLaMA原生tokenizer进行合并,最终得到一个扩展后的tokenizer模型。国内Chinese-LLaMA-Alpaca开源项目详细......