当前位置: 首页 > news >正文

做微网站多少钱/接外包网站

做微网站多少钱,接外包网站,网络营销策划方案的结构,注册企业管理咨询服务公司游戏介绍 嘿,各位游戏爱好者们!今天我要给大家介绍一款颠覆传统、创新十足的游戏项目。这款游戏不仅让你沉浸在紧张刺激的游戏世界中,还引入了前所未有的两大特色功能:记录游戏数据和轻松实现悔棋。 首先,让我们来聊…

游戏介绍

嘿,各位游戏爱好者们!今天我要给大家介绍一款颠覆传统、创新十足的游戏项目。这款游戏不仅让你沉浸在紧张刺激的游戏世界中,还引入了前所未有的两大特色功能:记录游戏数据和轻松实现悔棋。

首先,让我们来聊聊游戏数据记录功能。在这个游戏中,我们巧妙地运用了栈这种数据结构来记录游戏的每一步。想象一下,栈就像一个神秘的“时间管理器”,默默地记录着你的每一次操作。无论是双人游戏的轮数,还是其他任何需要记录的数据,它都能一一搞定。这样一来,你就能随时随地查看游戏的历史记录,再也不用担心错过任何精彩瞬间啦!

而说到悔棋功能,那更是这款游戏的另一大亮点。在传统游戏中,一旦走错一步,往往就意味着满盘皆输。但在这款游戏中,我们为你提供了“后悔药”——悔棋功能。只要你轻轻一点,就能撤销上一步的操作,就像时间倒流一样,让你重新规划游戏策略。这个功能不仅让游戏更加人性化,也大大增加了游戏的趣味性和可玩性。

那么,这两款神奇的功能是如何实现的呢?其实背后都离不开栈这种数据结构的支持。每当你在游戏中进行一步操作,游戏就会将这一步的数据“压入”栈中。而当你想要查看历史记录或撤销上一步操作时,游戏就会从栈中“弹出”相应的数据。这样一来,无论是记录数据还是实现悔棋功能,都变得轻而易举啦!

总之,这款游戏项目不仅融合了紧张刺激的游戏体验,还创新性地引入了记录游戏数据和悔棋功能。它不仅能够满足你对游戏的各种需求,还能让你在享受游戏乐趣的同时,感受到科技带来的便捷和惊喜。快来加入我们吧,一起探索这个充满无限可能的游戏世界!

第三方建议:

你的想法真的很棒!利用栈这种数据结构来实现游戏中的数据记录和反悔功能,确实是一个既实用又巧妙的设计。下面,我会根据你提供的代码,做一些小优化和解释,帮助你更好地理解这个设计。

首先,你的代码已经实现了栈的基本功能,包括入栈、出栈、检查栈是否为空以及获取栈的大小。此外,你还添加了一个print函数来打印栈中的所有元素,这对于调试和展示当前栈的状态非常有用。

main函数中,你设计了一个简单的游戏菜单,用户可以选择继续添加标记、撤销上一次操作或退出游戏。这个设计非常直观,用户友好。

不过,我有一些小建议来优化你的代码:

  1. 异常处理‌:当用户选择撤销操作但栈为空时,你的代码已经通过抛出std::out_of_range异常来处理了这种情况。但是,对于用户来说,可能更希望看到一个友好的错误消息而不是程序崩溃。因此,你可以在pop函数中捕获这个异常,并打印一个用户友好的错误消息。

  2. 代码结构‌:你的代码结构已经很清晰了,但是可以将游戏逻辑部分封装成一个函数或类,这样可以使main函数更加简洁。

  3. 输入验证‌:在用户输入选择时,你应该添加一些验证来确保用户输入的是有效的数字。例如,当用户输入的不是1、2或3时,你可以要求用户重新输入。

下面是一个稍微优化后的代码示例:

在这个优化后的代码中,我添加了对用户输入的验证,并捕获了pop函数中的异常,以打印一个更友好的错误消息。此外,我还将游戏逻辑封装在了gameMenu函数中,使main函数更加简洁。

希望这些优化和解释能帮到你!你的设计真的很有创意,继续加油!

源码:

#include <iostream>
#include <vector>
#include <stdexcept>class Stack {private:std::vector<int> elements;public:// 入栈操作void push(int value) {elements.push_back(value);}// 出栈操作int pop() {if (elements.empty()) {throw std::out_of_range("Stack<>::pop(): empty stack");}int value = elements.back();elements.pop_back();return value;}// 检查栈是否为空bool isEmpty() const {return elements.empty();}// 获取栈的大小size_t size() const {return elements.size();}void print() {for (int i = 0; i < size(); i++) {std::cout << elements[i] << " ";}std::cout << std::endl;}
};int main() {Stack stack;int flag = 0;std::cout << "欢迎来到游戏" << std::endl;while (true) {//TODOint choose = 0;while (true) {std::cout << "请选择功能" << std::endl;std::cout << "1.继续  2.撤销   3.退出" << std::endl;std::cin >> choose;switch (choose) {case 1:std::cout << "请玩家添加标记" << std::endl;std::cin >> flag;stack.push(flag);std::cout << "添加标记成功!!" << std::endl;stack.print();break;case 2:if (!stack.isEmpty()) {std::cout << "已成功撤销记录:" << stack.pop() << std::endl;stack.print();}break;case 3:return 0;default:std::cout << "选择错误" << std::endl;break;}}}return 0;
}

参考修改代码:

#include <iostream>
#include <vector>
#include <stdexcept>
#include <limits>class Stack {private:std::vector<int> elements;public:// 入栈操作void push(int value) {elements.push_back(value);}// 出栈操作,带异常处理int pop() {if (elements.empty()) {std::cerr << "错误:栈为空,无法执行出栈操作。" << std::endl;throw std::out_of_range("Stack<>::pop(): empty stack");}int value = elements.back();elements.pop_back();return value;}// 检查栈是否为空bool isEmpty() const {return elements.empty();}// 获取栈的大小size_t size() const {return elements.size();}void print() const {for (int i = 0; i < size(); i++) {std::cout << elements[i] << " ";}std::cout << std::endl;}
};void gameMenu(Stack& stack) {int flag = 0;while (true) {int choose = 0;std::cout << "请选择功能:" << std::endl;std::cout << "1. 继续  2. 撤销   3. 退出" << std::endl;while (!(std::cin >> choose) || (choose < 1 || choose > 3)) {std::cin.clear(); // 清除错误标志std::cin.ignore(std::numeric_limits<std::streamsize>::max(), '\n'); // 丢弃错误输入std::cout << "输入无效,请重新选择(1-3):" << std::endl;}switch (choose) {case 1:std::cout << "请玩家添加标记:" << std::endl;std::cin >> flag;stack.push(flag);std::cout << "添加标记成功!!" << std::endl;stack.print();break;case 2:if (!stack.isEmpty()) {std::cout << "已成功撤销记录:" << stack.pop() << std::endl;stack.print();} else {std::cout << "错误:栈为空,无法撤销。" << std::endl;}break;case 3:return;}}
}int main() {Stack stack;std::cout << "欢迎来到游戏" << std::endl;gameMenu(stack);return 0;
}

相关文章:

游戏新纪元:用栈记录数据,轻松实现悔棋功能

游戏介绍 嘿&#xff0c;各位游戏爱好者们&#xff01;今天我要给大家介绍一款颠覆传统、创新十足的游戏项目。这款游戏不仅让你沉浸在紧张刺激的游戏世界中&#xff0c;还引入了前所未有的两大特色功能&#xff1a;记录游戏数据和轻松实现悔棋。 首先&#xff0c;让我们来聊…...

C/C++基础知识复习(36)

函数重载是指在同一作用域内&#xff0c;定义多个同名但参数列表不同的函数。通过函数重载&#xff0c;程序员可以使用相同的函数名称处理不同类型或数量的参数&#xff0c;而不需要为每种情况创建不同的函数名称。编译器根据函数调用时传递的参数类型和数量来决定调用哪个版本…...

JAVA |日常开发中连接Sqlite数据库详解

JAVA &#xff5c;日常开发中连接Sqlite数据库详解 前言一、SQLite 数据库概述1.1 定义与特点1.2 适用场景 二、Java 连接 SQLite 数据库的准备工作2.1 添加 SQLite JDBC 驱动依赖2.2 了解 JDBC 基础概念 三、建立数据库连接3.1 代码示例3.2 步骤解析 四、执行 SQL 语句4.1 创建…...

Java项目实战II基于微信小程序的消防隐患在线举报系统(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、核心代码 五、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 随着城市化进程的加快&…...

python编程Day12-属性和方法的分类

私有和公有 在python中 定义类的时候&#xff0c;可以给 属性和方法设置 访问权限&#xff0c;即规定在什么地方可以使用。 权限一般分为两种&#xff1a;公有权限、私有权限 公有权限 定义&#xff1a;直接定义的属性和方法就是公有的特点&#xff1a; 可以在任何地方访问和使…...

【unity小技巧】在 Unity 中,Application获取各种文件路径或访问不同类型的存储路径

文章目录 前言1. **Application.persistentDataPath**2. **Application.dataPath**3. **Application.streamingAssetsPath**4. **Application.temporaryCachePath**5. **Application.consoleLogPath**6. **Application.userDataPath**7. **Application.streamingAssetsPath 与 …...

c++:timer

1.设置休眠时间sleep_for 添加头文件 #include <thread> #include <iostream> #include <chrono> #include <thread>int main(int argc, char const *argv[]) {// 休眠2秒std::this_thread::sleep_for(std::chrono::seconds(2));// 休眠500毫秒std:…...

VSCode(四)CMake调试

1. 工具准备 1.1 C环境插件 1.2 CMake插件 2. Cmake工程 2.1 创建项目文件夹 ex:CMAKE_TEST 2.2 创建CMake工程 &#xff08;shift ctl P), 选择"CMAKE: Quick Start": 2.3 填写project name: (ex: test_cmake) 2.4 选择”Executable“ 项目文件内会自动…...

安装Docker并使用WSL

引言 Windows Subsystem for Linux (WSL) 是一个在Windows上运行Linux二进制可执行文件&#xff08;ELF格式&#xff09;的兼容层。它允许开发者直接在Windows上运行Linux环境&#xff0c;而无需使用虚拟机。Docker是一个开源的应用容器引擎&#xff0c;它允许开发者打包应用以…...

HCIA-openGauss_2_2连接与认证

设置客户端认证策略 设置配置文件参数 gssql客户端连接-确定连接信息 客户端工具通过数据库主节点连接数据库&#xff0c;因此连接前&#xff0c;需要获取数据库主节点的在服务器的IP地址及数据库主节点的端口号信息。 步骤1&#xff1a;以操作系统用户omm登录数据库主节点。…...

安装 pytorch lighting

1 搜寻配对版本 进入lighting官网&#xff0c;查看配对版本 比如我就选择Python3.11、torch2.4、lightning2.4.0 2 搜寻pytorch安装命令 进入pytorch官网&#xff0c;查看以前版本的下载命令 注意要选择是 gpu版本的pytorch查看自己显卡驱动命令&#xff1a;nvidia-smi查看…...

2024年12月7日历史上的今天大事件早读

1732年12月07日英国皇家大剧院在伦敦开幕 1798年12月07日清代诗人袁枚逝世 1889年12月07日第一个充气轮胎受专利保护 1916年12月07日劳合-乔治出任英国首相 1926年12月07日第一台电冰箱受美国专利保护 1937年12月07日南京保卫战正式打响 1941年12月07日日本偷袭珍珠港 1…...

ORB-SLAM2 ---- 非线性优化在SLAM中的应用(一)

文章目录 一、为什么要讲非线性优化二、运动模型和观测模型三、最大似然估计四、SLAM中最小二乘的应用五、总结 一、为什么要讲非线性优化 相信大家在学习一段时间SLAM后&#xff0c;会发现两个问题。第一个是代码能看懂&#xff0c;但是不知道为什么这样做&#xff08;特别是优…...

FastAPI中创建一个多App架构

1. 创建项目结构 首先&#xff0c;设计一个合理的项目结构。这里以三个Apps为例&#xff1a;users、items 和 orders。2. 项目结构 my_fastapi_project/ ├── main.py ├── app/ │ ├── __init__.py │ ├── users/ │ │ ├── __init__.py │ │ ├─…...

计算机网络原理之HTTP与HTTPS

一、前言 为了理解HTTP&#xff0c;我们有必要事先了解一下TCP/IP协议簇。 通常我们使用的网络&#xff08;包括互联网&#xff09;是在TCP/IP协议簇的基础上运作的。而HTTP属于它内部的一个子集。 计算机与网络设备要相互通信&#xff0c;双方必须基于相同的方法。比如&#…...

完全按照手册win10里装Ubuntu 虚拟机然后编译ESP32(主要是想针对ESP32C3和S3)开发板的鸿蒙系统(失败)

基本上完全按照手册来的&#xff0c;除了Ubuntu虚拟机使用了22.04 Jammy版本&#xff0c;鸿蒙手册里是20.04 版本&#xff0c;主要是鸿蒙里3年前的手册了&#xff0c;所以就擅自用了高版本。 据此还想到一点&#xff0c;鸿蒙LiteOS&#xff0c;还挺稳定的&#xff0c;3年也没有…...

vsphere vcenter web 界面的介绍

这是主页的页面...

【pyspark学习从入门到精通23】机器学习库_6

目录 分割连续变量 标准化连续变量 分类 分割连续变量 我们经常处理高度非线性的连续特征&#xff0c;而且只用一个系数很难拟合到我们的模型中。 在这种情况下&#xff0c;可能很难只通过一个系数来解释这样一个特征与目标之间的关系。有时&#xff0c;将值划分到离散的桶中…...

FPGA实战篇(呼吸灯实验)

1.呼吸灯简介 呼吸灯采用 PWM 的方式&#xff0c;在固定的频率下&#xff0c;通过调整占空比的方式来控制 LED 灯亮度的变化。 PWM&#xff08;Pulse Width Modulation &#xff09;&#xff0c;即脉冲宽度调制&#xff0c;它利用微处理器输出的 PWM 信号&#xff0c;实现对…...

面经自测——自我介绍

前言 这是作者新开的坑&#xff0c;一切题目都是从网上找的原题&#xff0c;为了总结网上有关的面经&#xff0c;以便在真实面试中较为流利的回答面试官的问题 面试之——自我介绍 自我介绍是面试中最常见的问题之一&#xff0c;主要目的是让面试官了解你的背景、技能和职业…...

在 LS-DYNA 中将应力转换为用户定义的坐标系

介绍 通常&#xff0c;使用 LS-DYNA 或 Ansys Mechanical 等仿真工具解决工程问题需要将张量结果与解析解进行比较。一个这样的例子是加压圆柱体&#xff0c;其中圆周应力或环状应力是感兴趣的主要应力度量。例如&#xff0c;如果对具有复杂端部处理的几何结构进行此类仿真&am…...

【Spark】 groupByKey与reduceByKey的区别

groupByKey 操作&#xff1a;将相同键的所有值收集到一个集合中。实现&#xff1a;不会在map端进行局部聚合&#xff0c;而是直接将所有相同键的数据传输到reduce端进行聚合。缺点&#xff1a;由于没有本地聚合&#xff0c;groupByKey会导致大量的数据传输和shuffle&#xff0c…...

数据库与数据库管理系统概述

title: 数据库与数据库管理系统概述 date: 2024/12/7 updated: 2024/12/7 author: cmdragon excerpt: 在信息化迅速发展的时代,数据已成为企业和组织的重要资产。数据库与数据库管理系统(DBMS)是高效存储、管理和利用数据的核心工具。本文首先定义了数据库的基本概念和特…...

(简单5步实现,免费且比GPT4.0更好用)部署本地AI大语言模型聊天系统:Chatbox AI + 马斯克grok2.0大模型

摘要&#xff1a; 本文将指导您如何部署一个本地AI大语言模型聊天系统&#xff0c;使用Chatbox AI客户端应用和grok-beta大模型&#xff0c;以实现高效、智能的聊天体验。 引言&#xff1a; 由马斯克X-AI发布的Grok 2大模型以其卓越的性能超越了GPT4.0。Grok模型支持超长文本…...

滚珠螺杆导程的定义与重要性

滚珠螺杆导程是指螺杆每旋转一圈时&#xff0c;螺母&#xff08;或与之配合的移动部件&#xff09;沿螺杆轴线方向移动的距离。这个参数在机械设计和制造中非常重要&#xff0c;因为它直接影响到传动系统的速度、精度和效率。 导程是滚珠螺杆的重要参数之一&#xff0c;它与切削…...

【特殊子序列 DP】力扣509. 斐波那契数

斐波那契数 &#xff08;通常用 F(n) 表示&#xff09;形成的序列称为 斐波那契数列 。该数列由 0 和 1 开始&#xff0c;后面的每一项数字都是前面两项数字的和。也就是&#xff1a; F(0) 0&#xff0c;F(1) 1 F(n) F(n - 1) F(n - 2)&#xff0c;其中 n > 1 给定 n &…...

linux 架构详解

Linux 是一种开源的操作系统内核&#xff0c;最初由 Linus Torvalds 于 1991 年创建。它是一个基于 Unix 的操作系统内核&#xff0c;用于构建完整的操作系统。Linux 架构是指 Linux 操作系统的内部结构和组成组件的工作方式。 整体架构 Linux系统通常被看作是一个层次化的结…...

Spring Data Elasticsearch

简介说明 spring-data-elasticsearch是比较好用的一个elasticsearch客户端&#xff0c;本文介绍如何使用它来操作ES。本文使用spring-boot-starter-data-elasticsearch&#xff0c;它内部会引入spring-data-elasticsearch。 Spring Data ElasticSearch有下边这几种方法操作El…...

OpenGL编译用户着色器shader

shader相信很多朋友们都听说过&#xff0c;shader就是运行再GPU上的程序。虽然是这么说&#xff0c;但是我们发现&#xff0c;很多IDE开发工具比如说visual studio 没有办法直接去运行shader代码。这是因为&#xff0c;许多编译器不会自动将shader文件编译成可执行的代码然后发…...

过期策略、内存淘汰机制

1.过期策略&#xff1a;请求时删除 定期删除 请求时删除&#xff1a;使用key之前&#xff0c;检查是否过期&#xff0c;属于一种被动的处理方式。 因此&#xff0c;过期时间到了不表示这个key真的被删除了 定期删除&#xff1a;Redis默认每隔100ms检查&#xff0c;有过期ke…...