⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 snowwhite .cpp

📁 Snowwhite非常害怕的在森林里徘徊
💻 CPP
📖 第 1 页 / 共 2 页
字号:
//snowwhite-小游戏程序//


#include<stdio.h>
#include<stdlib.h>
#include<time.h>           //时间函数头包含,用于随机生成数//
int playstar=0;            //控制游戏是否开始//
//*******************结构体*******************//
struct personal {
	char name[30];         //名字//
	int  age;              //年龄//
	char attribute[15];    //属性  公主//
	int  healthy;          //生命值。满值为100,低于30发出警告//
	char sex;              //性别//
	char marriage[3];      //婚否//
	char character[30];    //性格//
}snowwhite={"snowwhite",20,"princess",100,'F',"NO","  clever lovely kindhearted"};

struct work{
	int  housing;         //收拾房子//
	int  rice;			  //做饭    //
	int  wash;			  //洗衣服  //
	int  mendline;		  //纺线    //
	int  mendclothes;	  //缝补衣裳//
}whitework;

struct Work{
	int searchgold;       //寻找金子//
	int searchsilver;	  //寻找银子//
	int searchdiamond;    //寻找钻石//
}shortwork;

struct Fortune{			  //财产//
	int glod;			  //金子//
	int silver;			  //银子//
	int diamond;          //钻石   及其微小概率暴啊 呵呵 //
}fortune;

struct condition{		  //状态结构体//
	char work;			  //是否在工作//
	char Return;		  //是否回来了//
}shortcondition={'N','Y'};//变量//

							
//*************自定义函数*********************//

void startmain();         //主菜单//				
void printmainmenu();     //打印主菜单//           
void printstory();		  //剧情介绍//               
void newplay();           //新游戏//				
void startplay();         //开始游戏//				
void saveplay();          //保存游戏//				
void confirmsave();       //确认保存函数//
void getplay();           //读取游戏//				
void help();              //帮助菜单//				
void whocreate();         //制作人员//				
void exit();              //退出游戏函数//             
void welcome();           //欢迎进入游戏//		              
void printsnowwhite();    //打印公主信息//             
void initworksnow();      //初始化白雪公主工作//     
void initworkshort();     //初始化矮人工作//	
void initfortune();		  //初始化财产//			
void initshortcondition();//初始化矮人状态//	
void worksnow();          //白雪公主工作//			
void workshort();         //矮人工作//				
void shortreturnwork();   //矮人工作回来了//		
void printplaywork();     //打印各种信息函数//		
void printsnowwork();     //打印公主工作量//		
void printshortwork();    //打印矮人工作量//		
void printfortune();      //打印财产//				
void choose();            //选择函数//				
void choose1();			  //选择函数1,是否为公主取名//				
void choose2();           //选择工作及查看各种信息函数//		
void choose3();			  //选择函数返回或继续//     
void returnmain();        //返回主菜单//			
void newplayagain();      //重新开始游戏//




//******************主函数*************************//
void main()
{
	startmain();   //***********开始进入游戏界面******************//
	choose();      //***********对主菜单的选择性实现其功能,以此一点点扩展出去********//
	exit();        //***********退出**********//
}

//********************开始主菜单函数*********************//
void startmain()
{
	welcome();      //欢迎函数//
		while(getchar()!='\n')
	{
			printf("                               press Enter to continue ");
			getchar();
	}
	printmainmenu();  //打印主菜单函数//
}
	
//*****************欢迎函数************************//
void welcome()
{
	printf("\n\n    *******************************************************************\n");
	printf("    *******************************************************************\n\n");
	printf("                   ******欢迎进入Snowwhite小游戏程序******\n\n");
	printf("                             press Enter to continue ");
}

//*****************打印主菜单函数********************//
void printmainmenu()
{	
	printf("             ****************  剧情介绍        请按 1 ***************\n");
	printf("             ****************  新游戏          请按 2 ***************\n");
	printf("             ****************  保存游戏        请按 3 ***************\n");
	printf("             ****************  读取游戏        请按 4 ***************\n");
	printf("             ****************  帮助            请按 5 ***************\n");
	printf("             ****************  制作人员        请按 6 ***************\n");
	printf("             ****************  返回到功能菜单  请按 7 ***************\n");
	printf("             ****************  退出            请按 0 ***************\n");
	choose();
}

//****************选择函数*********************//
void choose()
{
	printf("             请输入0--7的任意一个数来选择 ");
	switch(getchar())
	{
	case '0': exit();          break;
	case '1': printstory();    break;
	case '2': newplay();       break;
	case '3': confirmsave();   break;
	case '4': getplay();       break;
	case '5': help();          break;
	case '6': whocreate();     break;
	case '7': {
		if(playstar==1){    //游戏已经开始//
			getchar();
			printplaywork();
		}
		else{       //游戏没开始//
			system("cls");      //*******清屏*************下同//
			printf("\n             请先开始游戏!!\n");
			getchar();
			printmainmenu();
		}
			  }break;
	default : {
				getchar();
				choose();
			  }
	}
}

//*******************打印剧情函数*****************//
void printstory()
{	
	system("cls"); //********清屏********//
	printf("\n    这是一个古老而又美好的童话!!snowwhite	是一个可爱又美丽的公主。却因为后母嫉妒其美貌而被迫逃到森林......我们的游戏就是从这里开始,游戏中要确保公主的生命值大于0,一旦小于等于0,游戏结束!!\n             游戏中有及小几率获得钻石!!\n");
	returnmain();
}

//**************新游戏函数*******************//
void newplay()
{	
	system("cls");
	playstar=1;
	printf("                  ********** 正在初始化数据  *************\n");
	initworksnow();     //初始化//
	initworkshort();    //初始化//
	initfortune();      //初始化财产//
	snowwhite.healthy =100;       //生命值//
	printf("             ************ press Enter to continue ************ ");
	getchar();
	while(getchar()!='\n')
	getchar();
	printf("             要自己对公主取名字吗? 要press Y,由系统安排 press N\n ");
	choose1();
	printf("             信息处理完毕,请按“回车键”开始游戏");
	getchar();
	while(getchar()!='\n')
	{
		printf("            请按“回车键”开始游戏");
		getchar();
	}
	startplay();
}

//***********公主死亡 重新开始游戏**************//
void newplayagain()
{
			switch(getchar()){
			case 'y':
			case 'Y':{
				getchar();
				newplay();  //新游戏//
					 }break;
			case 'n':
			case 'N':{
				exit();
			}break;
			default :{
				printf("           请输入正确的字符  ");
				getchar();
				newplayagain();
					 }
			}
}


//*********确认保存函数***************//
void confirmsave()
{
	system("cls");
	if(playstar==1)
	{
	printf("\n             确认保存 press Y,  不保存 press N  ");
	getchar();
	switch(getchar())
	{
	case 'y':
	case 'Y':{
		saveplay();  //保存游戏//
			 }break;
	case 'n':
	case 'N':{
		getchar();
		system("cls");
		printmainmenu();  //回到主菜单//
			 }break;
	default:{
		printf("             请输入正确的字符  ");
		confirmsave();
			}
	}
	}
	else
	{
		printf("\n             请先开始游戏!!\n");
		getchar();
		printmainmenu();
	}
}

//**************保存游戏函数*****************//
void saveplay()
{	
	char d;
	FILE *fp;
	if((fp=fopen("snowwhite","wb"))==NULL)      //打开文件失败//
	{
		printf("无法创建文件");
		exit(0);
	}
	if(fwrite(&snowwhite,sizeof(struct personal),1,fp)!=1)
		printf("             ***********游戏保存失败*************");
	if(fwrite(&whitework,sizeof(struct work ),1,fp)!=1)
		printf("             ***********游戏保存失败*************");
	if(fwrite(&shortwork,sizeof(struct Work ),1,fp)!=1)
		printf("             ***********游戏保存失败*************");
	if(fwrite(&fortune,sizeof(struct Fortune ),1,fp)!=1)
		printf("             ***********游戏保存失败*************");
	if(fwrite(&shortcondition,sizeof(struct condition ),1,fp)!=1)
		printf("             ***********游戏保存失败*************");
	printf("             ************游戏保存成功************\n");  //保存成功//
	fclose(fp);
	printf("             需要打印游戏信息按 Y 否则按 N "); //是否要打印信息//
	getchar();
	d=getchar();
	while(d!='y' && d!='n')	
		{
			printf("            请输入 Y or N ");
			d=getchar();
		}
	system("cls");
		switch(d)
		{
		case 'Y':
		case 'y':{
			printf("\n             名字 %10s       年龄 %2d       属性   %5s(公主)\n             生命值 %4d     性别 %3c(M为男 F为女)    婚否 %5s\n             性格 %20s\n",snowwhite.name,snowwhite.age,snowwhite.attribute,snowwhite.healthy,snowwhite.sex,snowwhite.marriage,snowwhite.character);           
			printf("\n             收拾%2d次房子   做%2d次饭   洗%2d次衣服   纺%2d次线   缝补%2d次衣裳\n",whitework.housing,whitework.rice,whitework.wash,whitework.mendline,whitework.mendclothes);
			printf("\n             寻找%2d次金子      寻找%2d次银子   寻找%2d钻石\n",shortwork.searchgold,shortwork.searchsilver,shortwork.searchdiamond );
			printf("\n             财产: 金子 %2d    银子 %2d   钻石 %2d\n",fortune.glod ,fortune.silver ,fortune.diamond );
			printf("\n             工作 %c (Y 是 N 否)   在家 %c (Y 是 N 否)\n",shortcondition.work ,shortcondition.Return ); 
		}break;
		case 'N':
		case 'n':{
		}break;
		}
	printf("             press Enter to exit ");
	getchar();
	while(getchar()!='\n')
	getchar();
	exit();	
}

//***********读取游戏函数***********//
void getplay()
{		
	system("cls");
	FILE *fp;
	if((fp=fopen("snowwhite","rb"))==NULL) //打开失败//
	{	
		printf("             没有存档游戏,请重新选择\n");
		getchar();
		returnmain();      //回到主菜单//
	}
	else{
		playstar=1;
		fread(&snowwhite,sizeof(struct personal),1,fp);
		printf("\n             名字 %10s       年龄 %2d       属性   %5s(公主)\n             生命值 %4d     性别 %3c(M为男 F为女)    婚否 %5s\n             性格 %20s\n",snowwhite.name,snowwhite.age,snowwhite.attribute,snowwhite.healthy,snowwhite.sex,snowwhite.marriage,snowwhite.character); 
		fread(&whitework,sizeof(struct work ),1,fp);
		printf("\n             收拾%2d次房子   做%2d次饭   洗%2d次衣服   纺%2d次线   缝补%2d次衣裳\n",whitework.housing,whitework.rice,whitework.wash,whitework.mendline,whitework.mendclothes);
		fread(&shortwork,sizeof(struct Work ),1,fp);
		printf("\n             寻找%2d次金子      寻找%2d次银子       寻找%2d钻石\n",shortwork.searchgold,shortwork.searchsilver,shortwork.searchdiamond );
		fread(&fortune,sizeof(struct Fortune ),1,fp);
		printf("\n             财产: 金子 %2d    银子 %2d   钻石 %2d\n",fortune.glod  ,fortune.silver,fortune.diamond  );
		fread(&shortcondition,sizeof(struct condition ),1,fp);
		printf("\n             工作 %c (Y 是 N 否)   在家 %c (Y 是 N 否)\n",shortcondition.work ,shortcondition.Return ); 
		printf("              press Enter to continue ");
		getchar();
		while(getchar()!='\n')
		{
			printf("            press Enter to continue ");
			getchar();
		}
		printplaywork();  //********回到功能菜单*********//
	}

}

//****************帮助函数********************//
void help()
{	
	system("cls");
	printf("\n             游戏中确保白雪公主的生命值大于等于0。按照提示操作.\n             游戏中有及小几率获的钻石!!!!\n");
	returnmain();
}

void whocreate()
{	
	system("cls");
	printf("\n             本程序有信息工程学院电气信息064   **菜鸟_夏贤磊**  创作。\n             如有意见和建议请联系   xiaxianlei@yahoo.com.cn\n");
	returnmain();

}

//*******************退出函数******************//
void exit()
{	system("cls");
	exit(0);
}

//*************返回主菜单函数****************//
void returnmain()
{
	printf("             press Enter to continue ");
	while(getchar()!='\n')
	getchar();
	getchar();
	system("cls");
	printmainmenu();
}

//**********初始化矮人工作函数****//

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -