对世界如何产生的很感兴趣,所以简单写了个模拟世界产生的程序
所有代码
[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");
}
}
}
|