首次编写博客实验(cute_cat小游戏)

小游戏大概内容:


项目大体为: ①收养猫猫 ②和猫猫玩耍的小游戏 ③将部分信息实时记录至txt

实现手段:①结构体 链栈相关知识    ②文件操作        ③基础选择 循环 变量设置 判断等基本操作


主要思路:
①创造“猫猫”结构体存储 猫猫姓名 幸福度信息 并将最新情况存储与txt文档
②创造循环游戏    
    提供:
        1.喂食猫猫    :    包括猫猫饿与不饿两种情况   和  三种不同食物以供选择        记录每只猫猫吃了每种食物多少次
        2.摸摸猫猫    :    用随机数来实现小概率会被猫猫讨厌的功能    //并且随着好感度不同 猫猫表情也不同
        3.收养猫猫等选项供玩家选择    :
        4.查询猫猫各个信息            :将猫猫的信息输出
        5.当且仅当玩家输入“0”时停止循环,即结束游戏
③每次在循环菜单时,设随机数和区间来使猫猫健康度  饱食度有所变化        
④随着摸摸猫猫    猫猫的幸福度会提升或有小几率减少            
    //能完成尽量加的一点:    并且随着幸福度提升    猫猫会有不同的表情


txt文档收录信息:
    注:实时刷新,先清空文档,再重新将信息录入 ;确保为最新信息
1.猫猫饱食度
2.猫猫幸福度
3.猫猫姓名
4.猫猫吃每个食物次数
5.猫猫总数

文件思路:

 

代码部分:

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include <string.h>



#define OK 1
#define ERROR 0

int total_cat=0;

char filename[]="cute_cat.txt";


//构建猫猫结构体类 
typedef struct Cat

{

	char name[20];
	
    int favourat;				//favourat【1,15】 

    int hugry;					//hugry【0,10】 
	
	//三种食物吃了几次 
	int a;
	int b;
	int c;
	
	//摸了几次猫猫 
	int d;
	
	//被咬了几次
	int e; 
	
	struct Cat *next;
   // int ;

}Cat,*Catwhich;

Cat *cat;

//定义全局结构体 方便调用 
struct Cat *cat2;

//初始化猫猫链栈
void Int_maomao(Catwhich &cat){
	cat = (Cat*)malloc(sizeof(Cat));
	cat=NULL;
} 

//串联链栈
void Put_maomao(Catwhich &cat){
	Cat *cat1;
	cat1 = (Cat*)malloc(sizeof(Cat));
	cat1->favourat=1;
	cat1->hugry=1;
	cat1->a=0;
	cat1->b=0;
	cat1->c=0;
	cat1->d=0;
	cat1->e=0;
	scanf("%s",cat1->name);	
	cat1->next=cat;
	cat=cat1;
}

//寻找想要一起玩的猫猫 
void Searchmaomao(Catwhich &cat,Catwhich &cat1,char name[]){
	Cat *head=cat;
	int i=0;
	while(head){
		if(strcmp(head->name, name)==0){
			i=1;
			cat1=head;
			break;
		}
		else	head=head->next;
	}
	if(i==0)	printf("未找到该猫猫!");
}

//输出目前所收养的猫猫 
 void Put_maomaoName(){
	Cat *head=cat;
	int i=1;
	while(head!=NULL){
		printf("\n		%d. %s",i,head->name);
		i++;
		head=head->next;
	}
 }
 
 
//输出猫猫信息
void Put_data(Catwhich &cat1) {
	
		printf("%s",cat1->name);
	
}
 
 //废案 
void Free_lianzhan(Catwhich &cat1){
	while(cat1!=NULL){
	}
	free(cat1);
}


//清屏并按任意键以继续 
void Clean1(){
	printf("\n\n					按任意键以开始游戏......");
	getch();
	system("cls");
}

 

//开始界面 
void StartGame(){
	printf("\n\n\n\n						可爱猫猫");//6个tab位置 
	printf("\n\n					按任意键以开始游戏......");
	getch();
	system("cls");
	printf("\n\n				你开了一家宠物店 专门收养无家可归的流浪猫猫");
	printf("\n\n								按任意键以开始游戏......");
	getch();
	system("cls");
	printf("\n\n				现在是工作时间 可以选择你的工作");
	Clean1(); 
}



//菜单选项 
void menu(){
		
	
	printf("\n\n						以下为目前你可以操作的选项:");
	
	//当收养的猫猫数不为零 
		if(total_cat!=0){
			
			
	printf("\n		1.(	.ω.)ノ摸摸猫猫");
	printf("\n		2.给猫猫喂食");
	printf("\n		3.出门收留流浪猫"); 
	printf("\n		4.输入0以退出游戏......");
	printf("\n\n\n		请输入所对应的数字以进行相应操作......"); 
		
	
	}
	//当收养的猫猫数为零 
	else
	{
		printf("\n	您暂时没有收养流浪猫,请出门搜寻!");
		printf("\n		请输入3以所寻猫猫,继续游戏"); 
		printf("\n		或输入0以退出游戏......");
	}
	
	
	
	
	
}

		
												//游戏分支



// 1.收留猫猫~
void GetCat(){

char name[20];
printf("\n\n				你想给猫猫起名为:");
	 
	 
	Put_maomao(cat);	//建立新的猫猫信息 
	
	Cat *cat1=cat;
		printf("\n\n		%s:喵呜~",cat1->name);
		printf("\n\n			成功收养%s!",cat1->name);
		total_cat++;		//猫猫总数加一 
	system("cls");
}



// 2.摸摸猫猫╰( ̄ω ̄o) 
void momo(){
	
	printf("\n\n			您收养了以下猫猫:");
			
			//输出所收养的猫猫名字 
			Put_maomaoName();
				
			printf("\n\n			请输入您想一起玩的猫猫的名字:");
		
			char name[50];
			scanf("%s",name);
		Cat *cat1;
			
			//找到所找猫猫 
			Searchmaomao(cat,cat1,name);
			cat2=cat1;
	
	printf("\n\n			好乖好乖~");
	cat2->d++;
	int num=rand()%99+1;
	if(cat2->favourat==1)	{
	 cat2->favourat++;
	 printf("\n\n		你抚顺了猫猫的毛,但猫猫对你有所警戒");
	}
	else if(cat2->favourat<=5){
		if(num>0&&num<=60)	{
			cat2->favourat--;
			printf("\n\n		你尝试拉猫猫的尾巴,猫猫咬了你一口(HP--)");
			cat2->e++;
		}		
		else {
			cat2->favourat++;
			printf("\n\n		你轻轻揉搓猫猫的脑袋,猫猫趴在你的腿上微眯双眼~"); 
		}
	}
	else if(cat2->favourat<=10){
		if(num>0&&num<=50)	{
			cat2->favourat--;	
			printf("\n\n		你不小心把猫猫惹恼了,猫猫咬了你一口(HP--)");
			cat2->e++;
		}	
		else {
			cat2->favourat++;
			printf("\n\n		你抱着猫猫祥和地晒太阳");
		}
	}
	else if(cat2->favourat>10){
		cat2->favourat++;
		printf("\n\n		你刚打卡房门,猫猫便向你扑来并依偎你的裤腿~");
	} 
	
}

//与猫猫玩耍时 猫猫有可能掉饱食度 
void BeHungry(){
	int num=rand()%99+1;
	if(cat2->hugry>2){
		if(num<70)	cat2->hugry--;
	}
	
}

//投食猫猫 
void IfHungry(){
	
	printf("\n\n			您收养了以下猫猫:");
			
			//输出所收养的猫猫名字 
			Put_maomaoName();
				
			printf("\n\n			请输入您想一起玩的猫猫的名字:");
		
			char name[50];
			scanf("%s",name);
		Cat *cat1;
			
			//找到所找猫猫 
			Searchmaomao(cat,cat1,name);
			cat2=cat1;
	
	
	
	
	if(cat2->hugry<10){
		cat2->hugry=10;
		printf("\n\n			请选择你要投喂的食物:");
		printf("\n\n		1. 朴实无华の猫粮");
		printf("\n\n		2. 无骨坤肉");
		printf("\n\n		3. 主人上班摸的一池塘鱼");
		
		char choice=getch();
		
		if(choice=='1'){
			printf("\n\n			已投喂“朴实无华の猫粮”");
			cat2->a++;
		}
		else if(choice=='2'){
			printf("\n\n			已投喂“无骨坤肉”");
			cat2->b++;
		}
		else if(choice=='3'){
			printf("\n\n			已投喂“主人上班摸的一池塘鱼”");
			cat2->c++;
		}
		printf("\n\n		%s:喵~",cat2->name);
	}
	else{
		printf("\n\n		猫猫不饿并且打翻了猫粮......"); 
	}
}


										//游戏主干 

//将信息实时录入txt										
void WriteIn(){
			FILE*fp=fopen(filename,"w");
			if(!fp){
				printf("录入猫猫信息失败") ;
			}
			else{
				struct Cat *cat1=cat;
				fseek(fp,0,SEEK_END);
				while(cat1!=NULL){
					fputs("\n",fp);
					fputs("猫猫名字:",fp);
					fputs(cat1->name,fp);
					fputs("\n猫猫心情:",fp);
					fprintf(fp,"%d",cat1->favourat);
					fputs("\n猫猫吃了朴实无华の猫粮次数:",fp);
					fprintf(fp,"%d	",cat1->a);
					fputs("\n猫猫吃了无骨坤肉次数:",fp);
					fprintf(fp,"%d	",cat1->b);
					fputs("\n猫猫吃了主人上班摸的一池塘鱼次数:",fp);
					fprintf(fp,"%d	",cat1->c);
					fputs("\n摸摸猫猫次数╰( ̄ω ̄o) :",fp);
					fprintf(fp,"%d",cat1->d);
					fputs("\n被猫猫咬的次数:",fp);
					fprintf(fp,"%d",cat1->e);
					fputs("\n",fp);
					fputs("\n",fp);
					cat1=cat1->next;
				}
				
				fclose(fp);
			}
		} 		
		
										
char choice='8';
//开始游玩 
void PlayGame(){
	while (choice != '\0') {
		
		menu();			//菜单选项 
		choice=getch();
		if (choice == '1') {	//摸摸猫猫
			momo();
			BeHungry();
		}
		else if (choice == '2') {	//投喂猫猫
			IfHungry();
		}
		else if (choice == '3') {	//收留猫猫
			GetCat(); 
		}
		else if (choice == '0') {	//再见猫猫
			system("cls");
			printf("\n\n		再见猫猫~"); 
			break;
		}
		else {
			;
		}
		
		//记录猫猫信息于txt文档
		WriteIn();
		
		printf("\n\n						按任意键以继续游戏......");
	getch();
	system("cls");
	}
}

int main(){
	StartGame();	//启动游戏 
	
	PlayGame();		//开始游玩

	return 0;
}

对项目的想法:可以加入图像库,对游戏做一定美化,同时可以插入bgm。

                        丰富游戏内容玩法

参考文献:

(18条消息) C语言文件操作(含详细步骤)_zjruiiiiii的博客-CSDN博客

(18条消息) C语言实现链栈的创建、入栈、出栈、取栈顶、遍历......等基本操作(小白版详解)_Qian_Qian_IT的博客-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值