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

基于NetWork的类FNAF游戏DEMO框架

脑洞大开 想做个fnaf1并加入自己的设计..

开干!!!!

#include <stdio.h>
#include <iostream>
#include <random>
#include <ctime>bool leftdoor = true, rightdoor = true, camddoor = true;
float power = 900,fanusepower = 0;typedef struct movement {struct movement** next;int data, size;
} movement;#define R1A -1
#define R1B -2
#define R1C -3// Function to get the name of a movement node based on its data
const char* getNodeName(int data) {switch (data) {case R1A: return "cam1a";case R1B: return "cam1b";case R1C: return "cam1c";case -4: return "camr";case -5: return "camd";case 5: return "cam5";case 6: return "cam6";case 7: return "cam7";case 3: return "cam3";case 21: return "cam2a";case 22: return "cam2b";case 41: return "cam4a";case 42: return "cam4b";default: return "unknown";}
}int main() {// Initialize random number generatorstd::mt19937 rng(std::time(0));// Set up the movement graphmovement cam1a{}, cam1b{}, cam1c{};movement cam5{}, camr{}, cam6{}, cam7{}, cam3{}, camd{};movement cam2a{}, cam2b{}, cam4a{}, cam4b{};cam1a.data = R1A;cam1a.next = new movement * [1];cam1a.next[0] = &cam1b;cam1a.size = 1;cam1b.data = R1B;cam1b.next = new movement * [4];cam1b.next[0] = &cam1a;cam1b.next[1] = &cam1c;cam1b.next[2] = &cam5;cam1b.next[3] = &camr;cam1b.size = 4;cam1c.data = R1C;cam1c.next = new movement * [4];cam1c.next[0] = &cam1b;cam1c.next[1] = &cam6;cam1c.next[2] = &cam2a;cam1c.next[3] = &cam4a;cam1c.size = 4;cam5.data = 5;cam5.next = new movement * [1];cam5.next[0] = &cam1b;cam5.size = 1;cam6.data = 6;cam6.next = new movement * [1];cam6.next[0] = &cam1c;cam6.size = 1;camr.data = -4;camr.next = new movement * [2];camr.next[0] = &cam1b;camr.next[1] = &cam7;camr.size = 2;cam7.data = 7;cam7.next = new movement * [3];cam7.next[0] = &camr;cam7.next[1] = &cam4a;cam7.next[2] = &camd;cam7.size = 3;cam3.data = 3;cam3.next = new movement * [1];cam3.next[0] = &cam2a;cam3.size = 1;camd.data = -5;camd.next = new movement * [1];camd.next[0] = &cam7;camd.size = 1;cam2a.data = 21;cam2a.next = new movement * [3];cam2a.next[0] = &cam1c;cam2a.next[1] = &cam2b;cam2a.next[2] = &cam3;cam2a.size = 3;  // Fixed: was 2 but has 3 elementscam2b.data = 22;cam2b.next = new movement * [1];cam2b.next[0] = &cam2a;cam2b.size = 1;cam4a.data = 41;cam4a.next = new movement * [3];cam4a.next[0] = &cam1c;cam4a.next[1] = &cam7;cam4a.next[2] = &cam4b;cam4a.size = 3;cam4b.data = 42;cam4b.next = new movement * [1];cam4b.next[0] = &cam4a;cam4b.size = 1;// Start at cam1amovement* current = &cam1a;movement* previous = nullptr;std::cout << "Starting at: " << getNodeName(current->data) << "\n";// Perform 30 random stepsunsigned int tempx = 3;bool lock = false;for (int i = 1; i <= 230; i++) {// Generate random index for next movement, avoiding immediate backtrack if possibleint nextIndex;int attempts = 0;const int max_attempts = 10; // Limit attempts to avoid infinite loopsif (camddoor == true) {camd.next[0] = &camd;cam7.size = 2;}else if (camddoor == false) {camd.next[0] = &cam7;cam7.size = 3;}if (current->data == 22) {if (leftdoor == false) {lock = true;if (tempx == 0) {printf("Jumpscare!\n");printf("+0.5 coins,You've been caught by Bonnie.\n");return 0;}tempx--;}if (leftdoor == true) {printf("Bonnie gets stuck in the door\n");printf("+2 coins,Perfect to close the door!\n");lock = false;tempx = 3;} }do {std::uniform_int_distribution<int> dist(0, current->size - 1);nextIndex = dist(rng);attempts++;} while (attempts < max_attempts &&current->next[nextIndex] == previous &&current->size > 1); // Only avoid backtrack if we have alternatives// Store previous node before movingprevious = current;// Move to next nodeif (!lock) { current = current->next[nextIndex]; }// Report positionstd::cout << "Step " << i << ": " << getNodeName(current->data) << "\n";power -= fanusepower;}// Clean up allocated memorydelete[] cam1a.next;delete[] cam1b.next;delete[] cam1c.next;delete[] cam5.next;delete[] cam6.next;delete[] camr.next;delete[] cam7.next;delete[] cam3.next;delete[] camd.next;delete[] cam2a.next;delete[] cam2b.next;delete[] cam4a.next;delete[] cam4b.next;return 0;
}

交互什么的没做,博主太废物fnaf1第二夜没过,所以搞成200电力hh..

11.4514天后改成html或EasyX或者GCC使用ege.h发布图形版的含交互的完整DEMO。

相关文章:

基于NetWork的类FNAF游戏DEMO框架

脑洞大开 想做个fnaf1并加入自己的设计.. 开干!!!! #include <stdio.h> #include <iostream> #include <random> #include <ctime>bool leftdoor true, rightdoor true, camddoor true; float power 900,fanusepower 0;typedef struct movement…...

湖北理元理律师事务所:债务优化中的生活保障实践

在债务压力与生活质量失衡的普遍困境中&#xff0c;法律服务的价值不仅在于解决债务问题&#xff0c;更在于帮助债务人重建生活秩序。湖北理元理律师事务所通过其债务优化服务&#xff0c;探索出一条“法律生活”的双轨路径。 债务规划的核心矛盾&#xff1a;还款能力与生存需…...

golang连接sm3认证加密(app)

文章目录 环境文档用途详细信息 环境 系统平台&#xff1a;Linux x86-64 Red Hat Enterprise Linux 7 版本&#xff1a;4.5 文档用途 golang连接安全版sm3认证加密数据库,驱动程序详见附件。 详细信息 1.下载Linux golang安装包 go1.17.3.linux-amd64.tar.gz 1.1. 解压安…...

【Zephyr 系列 2】用 Zephyr 玩转 Arduino UNO / MEGA,实现串口通信与 CLI 命令交互

🎯 本篇目标 在 Ubuntu 下将 Zephyr 运行在 Arduino UNO / MEGA 上 打通串口通信,实现通过串口发送命令与反馈 使用 Zephyr Shell 模块,实现 CLI 命令处理 🪧 为什么 Arduino + Zephyr? 虽然 Arduino 开发板通常用于简单的 C/C++ 开发,但 Zephyr 的支持范围远超 STM32…...

AIS常见问题解答(AIS知识补充)

AIS常见问题解答 什么是 AIS&#xff1f; AIS 是“自动识别系统”的缩写。AIS 是一种基于甚高频 (VHF) 的导航和防撞工具&#xff0c;可以实现船舶之间的信息交换。这些信息&#xff08;AIS 数据&#xff09;还会被丹麦海事局运营的岸基 AIS 系统收集。因此&#xff0c;在提及 …...

基于Matlab实现指纹识别系统

【指纹识别系统基础概念】 指纹识别技术是一种生物特征识别技术&#xff0c;它利用人的指纹独一无二的特性进行个人身份的验证。指纹的细节特征&#xff0c;如脊、谷、分岔等&#xff0c;构成了指纹的唯一性&#xff0c;使得指纹识别在安全性、可靠性和便捷性上具有显著优势。…...

Windows10下搭建sftp服务器(附:详细搭建过程、CMD连接测试、连接失败问题分析解决等)

最终连接sftp效果 搭建sftp服务器 1、这里附上作者已找好的 freeSSHd安装包 ,使用它进行搭建sftp服务器。 2、打开freeSSHd安装包,进行安装 (1)、选择完全安装 (2)、安装完成后,对提示窗口选择关闭 (3)、安装完成后,提示是否安装私有密钥。我们选择"是" (4)、安…...

Vue3中Element-Plus中el-input及el-select 边框样式

如果不需要显示下边框&#xff0c;纯无边框直接将 【border-bottom: 1px solid #C0C4CC; 】注掉或去掉即可。 正常引用组件使用即可&#xff0c;无须自定义样式&#xff0c;最终效果CSS样式。 <style scoped> /* 输入框的样式 */ :deep(.el-input__wrapper) { box-sha…...

vue + ant-design + xlsx 实现Excel自定义模板导入功能

Vue Ant Design 扩展&#xff1a;实现Excel自定义模板导入功能 引言 在企业级应用场景中&#xff0c;除了数据导出&#xff0c;模板化导入是另一个核心需求。本文将深入讲解如何基于Vue3 Ant Design Vue xlsx技术栈&#xff0c;实现以下高级导入功能&#xff1a; 自定义模…...

SAP saml2 元数据 HTTP 错误

使⽤事务 SAML2 或 SAML2_IDP 在 ABAP 系统中配置 SAML 2.0 时&#xff0c; Web 页⾯返回 403 已禁⽌、 404 未找到 或 500 服务器内部错误。 在事务 SAML2 中下载元数据时&#xff0c; ⽹页返回 403 已禁⽌、 404 未找到或 500 服务器内部错误。 在事务 SAML2_IDP 中下载…...

知识课堂|sCMOS相机可编程快门模式解析

sCMOS相机凭借高灵敏度、高动态、低读出噪声特性&#xff0c;成为生命科学成像领域的核心设备。在光片荧光显微镜LSFM成像应用中&#xff0c;传统卷帘快门的时序限制可能引发运动伪影或光片照明不均匀问题。可编程快门模式通过精确控制传感器曝光时序&#xff0c;实现与激光扫描…...

数据结构之栈:原理与常用方法

1. 栈的定义 Stack是Vector的一个子类&#xff0c;它实现标准的后进先出堆栈。Stack只定义了创建空堆栈的默认构造方法。&#xff08;实际上是实现了List接口&#xff0c;因为Vector是List的子类&#xff09;。 Stack() // 创建一个空栈 2. 栈的基本操作 // 压栈操作 publi…...

在React框架中使用Braft Editor集成Table表格的详细教程

简介&#xff1a;Braft Editor是一款基于draft-js开发的React富文本编辑器&#xff0c;支持多媒体、自定义样式和扩展功能。其表格扩展模块允许用户插入、调整表格结构&#xff0c;适合需要数据展示的场景&#xff08;如CMS系统、报表工具&#xff09;。 1.安装依赖 yarn add…...

跳动的爱心

跳动的心形图案&#xff0c;通过字符打印和延时效果模拟跳动&#xff0c;心形在两种大小间交替跳动。 通过数学公式生成心形曲线 #include <stdio.h> #include <windows.h> // Windows 系统头文件&#xff08;用于延时和清屏&#xff09; void printHeart(int …...

gbase8s数据库+mybatis问题记录

在实际使用中一般都是mybatis数据库连接池组合使用&#xff0c;单独使用mybatis 连接数据库时&#xff0c;在循环使用PreparedStatement 时 会发生内存泄漏&#xff0c;PreparedStatement资源得不到释放 测试代码片段如下 drawMapper sqlsession.getMapper(DrawMapper.class…...

实现安卓端与苹果端互通的方案多种多样,以下是一些主要的方案

一、使用跨平台开发框架 1.React Native&#xff1a;通过React Native&#xff0c;开发者可以利用React.js的强大生态系统来构建原生移动应用。该框架允许使用相同的代码库在Android和iOS上开发应用&#xff0c;从而节省时间和成本。它支持热重载功能&#xff0c;使得开发者在…...

SpringBoot开发——Spring Boot异常处理全攻略:五大方案实战对比

文章目录 一、血泪教训:异常处理的代价二、五大异常处理方案详解2.1 全局异常处理(推荐方案)2.2 控制器级处理2.3 HTTP状态码注解2.4 ResponseEntity精细控制2.5 自定义异常体系(企业级方案)三、五大方案对比决策表四、四大避坑指南4.1 异常吞噬陷阱4.2 循环依赖问题4.3 异…...

React-props

文章目录 前言✅ 一、什么是 props&#xff1f;✅ 二、props 的特点✅ 三、props 的核心细节 & 常见问题1. **props 是新对象还是引用&#xff1f;**2. **函数作为 props&#xff1a;闭包陷阱**3. **默认值 & 解构默认值**4. **props.children 是什么&#xff1f;**5. …...

【C++篇】list模拟实现

实现接口&#xff1a; list的无参构造、n个val构造、拷贝构造 operator重载 实现迭代器 push_back() push_front() erase() insert() 头尾删 #pragma once #include<iostream> #include<assert.h> using namespace std;namespace liu {//定义list节点temp…...

Oracle exist

Oracle中的EXISTS是用于检查子查询结果是否为空的逻辑运算符&#xff0c;其核心特点和用法如下&#xff1a; ‌基础语法‌ SELECT columns FROM table1 WHERE EXISTS (SELECT 1 FROM table2 WHERE condition); 当子查询返回至少一行时返回TRUE&#xff0c;否则返回FALSE。 ‌执…...

带sdf 的post sim 小结

1.SDF文件主要内容 Delays&#xff08;module&#xff0c;device&#xff0c;interconnect&#xff0c;port&#xff09; Timing checks&#xff08;setup&#xff0c;hold&#xff0c;setuphold&#xff0c;recovery&#xff0c;removal&#xff0c;recrem&#xff09; Timing…...

【面试】喜茶Java面试题目

1、自我介绍、项目介绍&#xff1b; 2、equals 和 的区别&#xff1f;如何重写equals方法&#xff1f; 3、Java中的异常体系&#xff1f;运行时异常和非运行时异常的区别&#xff1f; 4、HashMap的底层数据结构&#xff1f;JDK1.7和1.8的区别&#xff1f; 5、线程池的核心…...

深入浅出:Spring IOCDI

什么是IOC IOC IOC(Inversion of Control)&#xff0c;是一种设计思想&#xff0c;在之前的SpringMVC里就在类上添加RestController和Controller注解就是使用了IOC&#xff0c;这两个注解就是在Spring中创建一个对象&#xff0c;并将注解下的类交给Spring管理&#xff0c;Spr…...

PlankAssembly 笔记 DeepWiki 正交视图三维重建

manycore-research/PlankAssembly | DeepWiki PlankAssembly项目原理 这个项目是一个基于深度学习的3D重建系统&#xff0c;其核心原理是从三个正交视图的工程图纸中重建出3D形状的结构化程序表示。 核心技术原理 1. 问题定义 PlankAssembly旨在从三个正交视图的工程图纸中…...

某验4无感探针-js逆向

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、总体概述二、请求分析1.分析请求流程三、逆向分析四、执行验证总结一、总体概述 本文主要实现用协议过某验4无感探针,相关的链接:aHR0cHM6Ly9ndDQuZ2VldGVzdC5jb20vZGVtb3Y0L2ludmlzaWJsZS1…...

js中common.js和ECMAScript.js区别

以下是关于 CommonJS 和 ECMAScript Modules&#xff08;ESM&#xff09;的详细对比分析&#xff0c;包含底层原理和示例说明&#xff1a; &#x1f9e9; 核心差异对比表 特性CommonJSES Modules来源Node.js 社区规范ECMAScript 语言标准加载方式动态加载&#xff08;运行时解…...

C语言操作Kafka

Kafka服务 Kafka的快速入门 文档很详细&#xff0c;基本上几步就可以搭建一个Kafka测试环境。 下载Kafka的二进制包&#xff0c;然后解压。 wget https://www.apache.org/dyn/closer.cgi?path/kafka/4.0.0/kafka_2.13-4.0.0.tgz tar -xzf kafka_2.13-4.0.0.tgz cd kafka_2.…...

STM32架构解析

在嵌入式开发领域,STM32作为广泛应用的Cortex-M系列微控制器,常常被问及一个基础而深刻的问题:STM32是哈佛结构,还是冯诺依曼结构?这个问题看似简单,却涉及到计算机架构发展的历史、理论与现实的融合。 一、计算体系结构基础:冯诺依曼 vs 哈佛 1.1 冯诺依曼结构的特性…...

在线政治采购系统架构构建指南

一、系统架构设计原则 合规性优先 系统需严格遵循《中华人民共和国政府采购法》及最新修订要求&#xff0c;例如采购流程需满足公开招标不少于 20 日的法定时限&#xff0c;合同需在中标通知书发出后 30 日内签订并备案。同时&#xff0c;需预留接口以适应未来法律修订带来的流…...

UHF RFID无源标签的芯片供电原理

作为无源物联网技术中最基础的一环,UHF RFID无源标签已经被广泛用于商超零售、物流仓储、图书档案、防伪溯源等量非常大的应用领域,仅2021年度,全球出货量就超过200亿。在实际应用中UHF RFID无源标签的芯片是究竟依靠什么来供电的呢? UHF RFID无源标签供电特点 1.借助无线…...