📄 snowwhite .cpp
字号:
//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 + -