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

基于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。

http://www.xdnf.cn/news/10054.html

相关文章:

  • oracle goldengate实现postgresql 到 postgresql的实时同步
  • 使用Vditor将Markdown文档渲染成网页(Vite+JS+Vditor)
  • 鲲鹏Arm+麒麟V10,国产化信创 K8s 离线部署保姆级教程
  • PyTorch中nn.Module详解
  • C#进阶-ASP.NET WebForms调用ASMX的WebService接口
  • 职坐标精选嵌入式AI物联网开源项目
  • allWebPlugin中间件VLC专用版之截图功能介绍
  • svg的制作与动态效果的开发使用
  • 京东热点缓存探测系统JDhotkey架构剖析
  • 鸿蒙OSUniApp 移动端直播流播放实战:打造符合鸿蒙设计风格的播放器#三方框架 #Uniapp
  • AI入门示例
  • 深入解析AQS:Java并发核心框架
  • 宝塔部署 Vue + NestJS 全栈项目
  • 单片机寄存器的四种主要类型!
  • AWS Transit Gateway实战:构建DMZ隔离架构,实现可控的网络互通
  • 模块化设计,static和extern(面试题常见)
  • 2025.5.30工作总结
  • ubuntu20.04安装教程(图文详解)
  • LangChain-结合魔塔社区modelscope的embeddings实现搜索
  • Java八股文——Java基础「概念篇」
  • azure web app创建分步指南
  • 从虚拟化到云原生与Serverless
  • CSS 渐变完全指南:从基础概念到实战案例(线性渐变/径向渐变/重复渐变)
  • 异步并发控制代码详细分析
  • (c++)string的模拟实现
  • 【Office】Excel两列数据比较方法总结
  • 基于大模型预测的FicatIII-IV期股骨头坏死综合治疗研究报告
  • 多模态大语言模型arxiv论文略读(100)
  • LNMP环境中php7.2升级到php7.4
  • Android Native 之 adbd进程分析