吾爱汇编

 找回密码
 立即注册

QQ登录

绑定QQ避免忘记帐号

查看: 3237|回复: 60

[C/C++] 对现实世界是如何产生的模拟

  [复制链接]
白云点缀的蓝 发表于 2021-10-25 18:15 | 显示全部楼层 |阅读模式

对世界如何产生的很感兴趣,所以简单写了个模拟世界产生的程序

世界2.png


世界.png





世界2.jpg

QQ浏览器截图20211019210732.png

世界.png

世界1.png

所有代码


[C] 纯文本查看 复制代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <Windows.h>
#define MAX 100  //最大房子,人,车数
#define COLORNUM 7 //颜色数量
#define SEXNUM 2 //性别数量
#define NUM 20 //分配内存字节数
CRITICAL_SECTION cs;
char* WorldState[] = { "存在","消失","存在与消失中间" };//世界的三种状态
int  ObjectProbability[] = { 50 };//物体进入状态的概率
char *ColorData[20] = { "红","橙","黄","绿","青","蓝","紫" };//世界颜色数据
 
//性别
struct Sex
{
        char *name;
}Sex[SEXNUM];
 
//颜色
struct  Color
{
        char *name;
}Color[COLORNUM];
 
 
//房子
struct House
{
        char *color;
        char *high;
        char *wide;
}House[MAX];
 
 
//人
struct  Person
{
        char *name;
        char *sex;
}Person[MAX];
 
 
//车
struct Car
{
        char *name;
        char *color;
}Car[MAX];
 
//初始化性别
void initializeSex() {
        Sex[0].name = malloc(NUM);
        Sex[1].name = malloc(NUM);
        memcpy(Sex[0].name, "男", NUM);
        memcpy(Sex[1].name, "女", NUM);
}
 
//初始化颜色
void initializeColor() {
        int i = 0;
        while (i<7)
        {
                Color[i].name = malloc(NUM);
                Color[i].name = ColorData[i];
                i++;
        }
 
}
 
//初始化世界数据
int initializeData() {
        int i = 1;
        int j = 0;
        char* buf[] = { "汽车","颜色","名字","性别","高","宽" };
        char* buf1 = malloc(NUM);
        char* buf2 = malloc(NUM);
        char* buf3 = malloc(NUM);
        char* buf4 = malloc(NUM);
        char* buf5 = malloc(NUM);
        char* buf0 = malloc(NUM);
        while (i <= 100)
        {
                Car[i].name = malloc(NUM);
                Car[i].color = malloc(NUM);
                Person[i].name = malloc(NUM);
                Person[i].sex = malloc(NUM);
                House[i].color = malloc(NUM);
                House[i].high = malloc(NUM);
                House[i].wide = malloc(NUM);
                sprintf(buf0, "%s:%d", buf[0], i);//汽车
                sprintf(buf1, "%s:%s", buf[1], Color[rand() % 6].name);//颜色
                sprintf(buf2, "%s:%d", buf[2], i);//名字
                sprintf(buf3, "%s:%s", buf[3], Sex[rand() % 2].name);//性别
                sprintf(buf4, "%s:%d", buf[4], (rand() % 100)+5);//高
                sprintf(buf5, "%s:%d", buf[5], (rand() % 100)+5);//宽
                memcpy(Car[i].name, buf0, NUM);
                memcpy(Car[i].color, buf1, NUM);
                memcpy(Person[i].name, buf2, NUM);
                memcpy(Person[i].sex, buf3, NUM);
                memcpy(House[i].color, buf1, NUM);
                memcpy(House[i].high, buf4, NUM);
                memcpy(House[i].wide, buf5, NUM);
                i++;
        }
        /*i = 0;
        while (i<100)
        {
                printf("%s\n",Car[i].name);
                printf("%s\n", Car[i].color);
                printf("%s\n", Person[i].name);
                printf("%s\n", Person[i].sex);
                printf("%s\n", House[i].color);
                printf("%s\n", House[i].high);
                printf("%s\n", House[i].wide);
                i++;
        }*/
}
 
//初始化所有数据
void initialize() {
        srand((unsigned int)NULL);//置随机数种子
        initializeSex();//初始化性别
        initializeColor();//初始化颜色
        initializeData();//初始化世界数据
        InitializeCriticalSection(&cs);
}
 
//出现跑车
void WINAPI showCar() {
        int i = 0;
        while (1)
        {
                Sleep(1000);
                //printf("%d", rand() % 100);
                if ((rand() % 100) > ObjectProbability[0]) {
                        EnterCriticalSection(&cs);
                        printf("一量跑车进入%s状态\t", WorldState[0]);
                        int CarNum = rand() % 100;
                        printf("%s\t", Car[CarNum].name);
                        printf("%s\t", Car[CarNum].color);
                        i++;
                        printf("跑车离开视野,进入%s状态\t\n", WorldState[2]);
                        LeaveCriticalSection(&cs);
                        printf("\n");
 
                }
         
        }
}
 
//出现房子
void WINAPI showHouse() {
        int i = 0;
        while (1)
        {
                Sleep(1000);
                //printf("%d", rand() % 100);
                if ((rand() % 100) > ObjectProbability[0]) {
                        EnterCriticalSection(&cs);
                        printf("一座靓丽的房子进入%s状态\t", WorldState[0]);
                        int HouseNum = rand() % 100;
                        printf("%s\t", House[HouseNum].high);
                        printf("%s\t", House[HouseNum].wide);
                        printf("%s\t", House[HouseNum].color);
                        i++;
                        printf("靓丽的房子离开视野,进入%s状态\t\n", WorldState[2]);
                        LeaveCriticalSection(&cs);
                        printf("\n");
 
                }
 
        }
}
 
//出现人
void WINAPI showPerson() {
        int i = 0;
        while (1)
        {
                Sleep(1000);
                //printf("%d", rand() % 100);
                if ((rand() % 100) > ObjectProbability[0]) {
                        EnterCriticalSection(&cs);
 
                        printf("一位靓仔进入%s状态\t", WorldState[0]);
                        int PersonNum = rand() % 100;
                        printf("%s\t", Person[PersonNum].name);
                        printf("%s\t", Person[PersonNum].sex);
                        i++;
                        printf("靓仔离开视野,进入%s状态\t\n", WorldState[2]);
                        LeaveCriticalSection(&cs);
                        printf("\n");
                }
 
        }
}
 
//开始
int begin() {
        DWORD ThreadID;
         
        CreateThread(NULL, 0, showCar, (LPVOID)"Car", 0, &ThreadID);//创建线程
        CreateThread(NULL, 0, showPerson, (LPVOID)"Person", 0, &ThreadID);//创建线程
        CreateThread(NULL, 0, showHouse, (LPVOID)"House", 0, &ThreadID);//创建线程
 
        while (1);
}
int main() {
        initialize();
        begin();
}


头文件的声明


[C] 纯文本查看 复制代码
#pragma once
int begin();
void initialize();
int initializeData();
void initializeColor();
void initializeSex();


初始化世界数据


[C] 纯文本查看 复制代码
//初始化世界数据
int initializeData() {
        int i = 1;
        int j = 0;
        char* buf[] = { "汽车","颜色","名字","性别","高","宽" };
        char* buf1 = malloc(NUM);
        char* buf2 = malloc(NUM);
        char* buf3 = malloc(NUM);
        char* buf4 = malloc(NUM);
        char* buf5 = malloc(NUM);
        char* buf0 = malloc(NUM);
        while (i <= 100)
        {
                Car[i].name = malloc(NUM);
                Car[i].color = malloc(NUM);
                Person[i].name = malloc(NUM);
                Person[i].sex = malloc(NUM);
                House[i].color = malloc(NUM);
                House[i].high = malloc(NUM);
                House[i].wide = malloc(NUM);
                sprintf(buf0, "%s:%d", buf[0], i);//汽车
                sprintf(buf1, "%s:%s", buf[1], Color[rand() % 6].name);//颜色
                sprintf(buf2, "%s:%d", buf[2], i);//名字
                sprintf(buf3, "%s:%s", buf[3], Sex[rand() % 2].name);//性别
                sprintf(buf4, "%s:%d", buf[4], (rand() % 100)+5);//高
                sprintf(buf5, "%s:%d", buf[5], (rand() % 100)+5);//宽
                memcpy(Car[i].name, buf0, NUM);
                memcpy(Car[i].color, buf1, NUM);
                memcpy(Person[i].name, buf2, NUM);
                memcpy(Person[i].sex, buf3, NUM);
                memcpy(House[i].color, buf1, NUM);
                memcpy(House[i].high, buf4, NUM);
                memcpy(House[i].wide, buf5, NUM);
                i++;
        }
        /*i = 0;
        while (i<100)
        {
                printf("%s\n",Car[i].name);
                printf("%s\n", Car[i].color);
                printf("%s\n", Person[i].name);
                printf("%s\n", Person[i].sex);
                printf("%s\n", House[i].color);
                printf("%s\n", House[i].high);
                printf("%s\n", House[i].wide);
                i++;
        }*/
}


初始化所有数据


[C] 纯文本查看 复制代码
//初始化所有数据
void initialize() {
        srand((unsigned int)NULL);//置随机数种子
        initializeSex();//初始化性别
        initializeColor();//初始化颜色
        initializeData();//初始化世界数据
        InitializeCriticalSection(&cs);
}


出现跑车


[C] 纯文本查看 复制代码
//出现跑车
void WINAPI showCar() {
        int i = 0;
        while (1)
        {
                Sleep(1000);
                //printf("%d", rand() % 100);
                if ((rand() % 100) > ObjectProbability[0]) {
                        EnterCriticalSection(&cs);
                        printf("一量跑车进入%s状态\t", WorldState[0]);
                        int CarNum = rand() % 100;
                        printf("%s\t", Car[CarNum].name);
                        printf("%s\t", Car[CarNum].color);
                        i++;
                        printf("跑车离开视野,进入%s状态\t\n", WorldState[2]);
                        LeaveCriticalSection(&cs);
                        printf("\n");
 
                }
         
        }
}


出现房子


[C] 纯文本查看 复制代码
//出现房子
void WINAPI showHouse() {
        int i = 0;
        while (1)
        {
                Sleep(1000);
                //printf("%d", rand() % 100);
                if ((rand() % 100) > ObjectProbability[0]) {
                        EnterCriticalSection(&cs);
                        printf("一座靓丽的房子进入%s状态\t", WorldState[0]);
                        int HouseNum = rand() % 100;
                        printf("%s\t", House[HouseNum].high);
                        printf("%s\t", House[HouseNum].wide);
                        printf("%s\t", House[HouseNum].color);
                        i++;
                        printf("靓丽的房子离开视野,进入%s状态\t\n", WorldState[2]);
                        LeaveCriticalSection(&cs);
                        printf("\n");
 
                }
 
        }
}


出现人


[C] 纯文本查看 复制代码
//出现人
void WINAPI showPerson() {
        int i = 0;
        while (1)
        {
                Sleep(1000);
                //printf("%d", rand() % 100);
                if ((rand() % 100) > ObjectProbability[0]) {
                        EnterCriticalSection(&cs);
 
                        printf("一位靓仔进入%s状态\t", WorldState[0]);
                        int PersonNum = rand() % 100;
                        printf("%s\t", Person[PersonNum].name);
                        printf("%s\t", Person[PersonNum].sex);
                        i++;
                        printf("靓仔离开视野,进入%s状态\t\n", WorldState[2]);
                        LeaveCriticalSection(&cs);
                        printf("\n");
                }
 
        }
}






评分

参与人数 9HB +5 THX +5 收起 理由
消逝的过去 + 1
后学真 + 1
风里去 + 1
飞刀梦想 + 1
微熊猫 + 1
agan8888 + 1
zxjzzh + 1 [吾爱汇编论坛52HB.COM]-学破解防破解,知进攻懂防守!
pmm018 + 2
大虚 + 1 [吾爱汇编论坛52HB.COM]-吃水不忘打井人,给个评分懂感恩!

查看全部评分

吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
康帅傅 发表于 2021-10-26 10:25 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
pp2021 发表于 2021-10-27 10:20 | 显示全部楼层

你这个只要开着就一直在刷屏啊,那些刷屏聊天的不会也是像你这么弄的吧?
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
甜甜向小鸭子 发表于 2022-1-22 20:09 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
虚幻和母鸡 发表于 2022-1-22 20:12 | 显示全部楼层

谢谢啊,滴水之恩涌泉相报~
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
oYmfLF8 发表于 2022-1-29 12:49 | 显示全部楼层
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
gEL1730 发表于 2022-1-29 12:49 | 显示全部楼层

帮顶一下
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
花生730498 发表于 2022-1-30 14:24 | 显示全部楼层

大佬无敌
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
yRAEnGO34 发表于 2022-1-31 19:30 | 显示全部楼层

不知道来晚了没有
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
fMb42 发表于 2022-2-2 02:43 | 显示全部楼层

谢谢分享
吾爱汇编论坛-学破解,防破解!知进攻,懂防守!逆向分析,软件安全!52HB.COM
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

警告:本站严惩灌水回复,尊重自己从尊重他人开始!

1层
2层
3层
4层
5层
6层
7层
8层
9层
10层

免责声明

吾爱汇编(www.52hb.com)所讨论的技术及相关工具仅限用于研究学习,皆在提高软件产品的安全性,严禁用于不良动机。任何个人、团体、组织不得将其用于非法目的,否则,一切后果自行承担。吾爱汇编不承担任何因为技术滥用所产生的连带责任。吾爱汇编内容源于网络,版权争议与本站无关。您必须在下载后的24个小时之内,从您的电脑中彻底删除。如有侵权请邮件或微信与我们联系处理。

站长邮箱:SharkHeng@sina.com
站长QQ:1140549900


QQ|RSS|手机版|小黑屋|帮助|吾爱汇编 ( 京公网安备11011502005403号 , 京ICP备20003498号-6 )|网站地图

Powered by Discuz!

吾爱汇编 www.52hb.com

快速回复 返回顶部 返回列表