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

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

相关文章:

  • 在 Android 上备份短信:保护您的对话
  • 项目管理工具Maven
  • 四、关系数据库标准语言SQL_2
  • 使用 Fetch + Streams 处理流式响应(Streaming Response)
  • 【空间光学系统与集成微纳光子学系统简介】
  • Proteus寻找元器件(常见)
  • 带你手写React中的useReducer函数。(底层实现)
  • ESP8266远程控制:实现网络通信与设备控制
  • Nginx网站服务:从入门到LNMP架构实战
  • 日志技术-LogBack、Logback快速入门、Logback配置文件、Logback日志级别
  • WebFuture:设置不自动删除操作日志
  • 26 C 语言函数深度解析:定义与调用、返回值要点、参数机制(值传递)、原型声明、文档注释
  • 万兴PDF手机版
  • 前端面试题目-高频问题集合
  • Windows10下使用QEMU安装Ubuntu20.04虚拟机,并启用硬件加速
  • 【目标检测】【AAAI-2022】Anchor DETR
  • 【孙悟空喝水】2022-2-7
  • 引进白光干涉仪管控微流控芯片形貌,性能大幅提升
  • 延迟复制与主从延迟监控指南
  • @Docker Compose 部署 Prometheus
  • 做公司网站怎么删除图片/优化网站找哪家
  • 个人域名可以建公司网站吗/网络营销专业是学什么的
  • 网络服务机构的网站/谷歌浏览器chrome官网
  • 网站建设简单点的/东莞做网站哪家公司好
  • 日本做外贸网站设计/百度网站域名
  • 如何在阿里巴巴上做网站/济南seo公司