- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我一直在 StackOverflow 上寻找一个简单的 C++ 网络 TCP 连接,我似乎只找到了 Java、Python 和 C#。我知道 Python 或 Java 可以建立简单的连接,但大多数情况下我正在用 C++ 编写一个简单的 Yahtzee 游戏,并想了解 C++ 中的网络,因为我有大约一年的 C++ 知识,但对这些没有很好的掌握其他语言,但遗憾的是,我找不到适合我需要的简单好设置。
我看到了C++ Winsock P2P谁有一个设置,但它有几点对初学者来说很难。
在我的游戏中,我希望客户端完成大部分工作(因为我听说这是一个更好的实现),但我不确定服务器在哪里获取输入并返回输出。我让客户滚动并显示滚动。然后我假设它会进行所有三个掷骰,一旦您选择了在哪里使用您的掷骰,客户端就会向服务器发送计分表中的位置和掷骰子。
我了解以下协议(protocol):您发送一些东西,服务器可以计算并将其发回,但我的问题是,我是否让我的客户发送一个数字(int choice = 12 显然是 yahtzee) 作为数据包消息,然后发送一组骰子掷骰 (int roll[5]) 供服务器计算其中的内容?还是客户应该做这项工作?这是我不知道的发送和整体设置。
最佳答案
这个问题很难回答,因为这实际上只是您决定如何去做,而且这两种方法都有效。服务器客户端系统中需要考虑的一些一般方面:
客户所做的事情更容易受到黑客攻击。 (例如,如果您在客户端生成随机骰子结果,则可能会更改代码并向您的服务器发送错误数据,例如总是 12 或其他)
当您的用户数量增长非常大时,您在服务器上所做的事情会影响性能。让客户端去做,让您的服务器处理其他事情的能力
尽可能限制您发送的信息量
所以一般的经验法则是:让服务器做任何“危险”的事情,让客户端做其他事情。 (尽管不幸的是,在这种情况下很多事情都是危险的)
在您的情况下,我会让服务器进行掷骰子并将结果发送给用户。
Do I have my client send a number (int choice = 12 for a yahtzee obviously) as a packet message and then send an array of dice rolls (int roll[5]) for the server to compute what goes in? or should the client do that work?
您不能发送一个空数组并让服务器填充它。请记住,这些可以是单独的计算机。他们无法访问彼此的内存。您可以向服务器发送一个请求(也许是一个 int 常量),这样它就知道该做什么(例如掷骰子)然后在网络上收听数据并解释例如服务器在掷骰子时发送给您的下 5 个字节。
关于C++ Yahtzee 通过 TCP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42867781/
我正在制作 java yahtzee 游戏,我只是想知道以下代码在任何情况下是否都会产生误报 die 是一个数组,其中包含每个骰子的伪随机(Math.random())数字,我已使用冒泡排序对它们进行
我拿回了学校作业,要求我们为 Yahtzee 游戏创建一些函数,其中之一是同类函数。这是我写的代码,我得到的评论是:“你必须能够检查所有数字直到 nrOfDieValues。”我不太确定如何检查最多
对于一项学校作业,我们正在努力用 java 实现 yahtzee 游戏,但我在为直道(小直道和大直道,这意味着 4/5 连续数字用于小直道和 5/5 表示大)。 我做了一个我认为应该有效的算法,但实际
我正在参加初学者的java类(class)。我已经使用这个 yahtzee 程序三周了,但我仍然无法弄清楚这一点。我需要滚动 5 个骰子两次,看看我是否得到一个 yahtzee(5 个骰子相同) 我在
我为 Yahtzee 编写了代码。我的代码询问用户是否想玩 Yahtzee 还是顺子。然后它会滚动,直到获得快艇或直道。 它运行良好,但需要很长时间并且需要太多轮次,所以我希望我的代码更加高效并且能够
我正在学习 MIT OpenCourseWare 计算机编程入门类(class),我不确定我是否以正确的方式解决了一个简单的模拟问题。 What is the probability of rolli
这是我的情况,我目前正在创建一个 Yahtzee game在 Lazarus IDE 中使用 Turbo Pascal 语言,我负责开发的计分方面,我已经完成了计分的下半部分,并且已经开始了较高部分,
在我制作的 Yahtzee 游戏中,我创建了一个有效的 javascript 函数来检查 5 个数字的数组是否有小顺子。我已经对它进行了无休止的测试,我相信它在 100% 的时间内都能正常工作,但就效
我一直在 StackOverflow 上寻找一个简单的 C++ 网络 TCP 连接,我似乎只找到了 Java、Python 和 C#。我知道 Python 或 Java 可以建立简单的连接,但大多数情
更新:我发现我的 DP 解决方案没有正确处理奖金的问题。我向状态数组添加了一个维度来表示前 6 个类别的总和。但是,解决方案超时。这不是很严重的超时,因为每个测试用例在我的机器上可以在不到 1 秒的时
我被要求用 Java 编写一个 Yahtzee 游戏。问题是,我有一个包含 5 个值的 vector (代表骰子),这些值是使用以下代码随机生成的: Value= 1 + (int)(Math.ran
我正在为学校的一项作业制作这个程序,但是我们需要获得获得 Yahtzee 所需的最高掷骰数和获得 Yahtzee 所需的最少掷骰数。然后我们需要找到平均卷数。目前,我对确定获得 Yahtzee 的最高
关闭。这个问题需要更多focused .它目前不接受答案。 想改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this q
我正在尝试检查保留的骰子掷骰(最多 5 个)是否是 3 个同类,因此我正在尝试将骰子掷骰值相互比较。 R的第一个值当然显示为0,但是代码运行后R的第二个值每次都显示为8191,我不太清楚为什么。 我也
我在初学者 C++ 类(class)中,我正在尝试构建一个 Yahtzee 游戏,用户可以在该游戏中掷骰子,希望所有五个骰子都获得相同的数字。我们需要尝试握住弹出次数最多的骰子(例如,我们掷出“4 5
我目前无法让我的重压机在 100% 的时间内正常工作。有时它的行为是正确的,只会改变我选择的内容,但有时它似乎有自己的想法。这是我的代码中的一些片段。 Int main() ... whi
我想输入一些与 rand 和 srand 函数混淆的“简单”代码,并且我尝试编写 Yahtzee rolls 的模拟器。它随机掷出 5 个骰子,如果它们匹配,它会打印出你有一个 Yahtzee 以及需
我是 C++ 的初学者,这是家庭作业,但我卡住了。我还有一个问题,然后我就完成了。我想不出一种算法可以判断用户输入的是小直线 (1234) 还是 (2345) 还是 (3456)。我知道如何使用循环来
我是一名优秀的程序员,十分优秀!