C语言小游戏-寻宝(幸运之星)
生活随笔
收集整理的這篇文章主要介紹了
C语言小游戏-寻宝(幸运之星)
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
尋寶游戲
#include<stdio.h> #include<string.h> #include<stdlib.h> #include<time.h> #include<windows.h>typedef struct {char name[20];//姓名 }Player;//玩家typedef struct {char name[20];//獎品float price;//價格 }Price;//獎品typedef struct {Player a;//獲獎的玩家Price b[3];//獲獎的三件獎品 }Record;//獎品int LoadPlayer(Player a[])//加載玩家信息 {int i=0;FILE* fp;//文件指針fp=fopen("player.txt","r+");//打開文件if(fp==NULL)return 0;//打開失敗返回0while(!feof(fp))//讀取信息到文件結(jié)束{fscanf(fp,"%s\n",a[i].name);i++;}fclose(fp);//關閉文件return i;//返回讀取到的玩家數(shù)量 }void SavePlayer(Player a[],int n)//保存玩家信息 {int i;FILE* fp;fp=fopen("player.txt","w+");//打開文件if(fp==NULL)return ;for(i=0;i<n;i++)//根據(jù)玩家數(shù)量 循環(huán)寫入文件{fprintf(fp,"%s\n",a[i].name);}fclose(fp);//關閉文件 }int LoadPrice(Price a[]) {int i=0;FILE* fp;fp=fopen("price.txt","r+");if(fp==NULL)return 0;while(!feof(fp)){fscanf(fp,"%s %f\n",a[i].name,&a[i].price);i++;}fclose(fp);return i; }void SavePrice(Price a[],int n) {int i;FILE* fp;fp=fopen("price.txt","w+");if(fp==NULL)return;for(i=0;i<n;i++){fprintf(fp,"%s %f\n",a[i].name,a[i].price);}fclose(fp); }int LoadRecord(Record a[]) {int i=0;FILE* fp;fp=fopen("record.txt","r+");if(fp==NULL)return 0;while(!feof(fp)){fscanf(fp,"%s %s %f %s %f %s %f\n",a[i].a.name,a[i].b[0].name,&a[i].b[0].price,a[i].b[1].name,&a[i].b[1].price,a[i].b[2].name,&a[i].b[2].price);i++;}fclose(fp);return i; }void SaveRecord(Record a[],int n) {int i;FILE* fp;fp=fopen("record.txt","w+");if(fp==NULL)return;for(i=0;i<n;i++){fprintf(fp,"%s %s %f %s %f %s %f\n",a[i].a.name,a[i].b[0].name,a[i].b[0].price,a[i].b[1].name,a[i].b[1].price,a[i].b[2].name,a[i].b[2].price);}fclose(fp); }int menu()//菜單 {int choice;system("cls");printf("幸運之星\n");printf("1:開始游戲\n");printf("2:歷史獲獎\n");printf("3:添加玩家\n");printf("4:添加獎品\n");printf("0:退出\n");printf("請輸入選擇:");scanf("%d",&choice);return choice; }int AddPlayer(Player a[],int n)//增加玩家 {system("cls");printf("請輸入新增加的玩家姓名:");scanf("%s",a[n].name);//添加到尾部printf("新增成功!\n");system("pause");return n+1;//玩家數(shù)量+1 }int AddPrice(Price a[],int n) {system("cls");printf("請輸入新增加的獎品名稱:");scanf("%s",a[n].name);printf("請輸入新增加的獎品價格:");scanf("%f",&a[n].price);printf("新增成功!\n");system("pause");return n+1; }int StartGame(Player a[],int an,Price b[],int bn,Record r[],int rn)//開始游戲 {int i,k,now,j;int no[3];//獎品編號int arr[100]={0};srand(time(NULL));//設置隨機數(shù)system("cls");if(an==0)//玩家數(shù)量為0{printf("本輪沒有玩家!\n");system("pause");return rn;}if(bn==0)//獎品數(shù)量為0{printf("本輪沒有獎品!\n");system("pause");return rn;}printf("本輪獎品為:\n");for(i=0;i<3;i++)//隨機選擇3個獎品{no[i]=rand()%bn;printf("獎品:%s\t價格:%.2f\n",b[no[i]].name,b[no[i]].price);strcpy(r[rn].b[i].name,b[no[i]].name);r[rn].b[i].price=b[no[i]].price;}for(i=0,now=0;i<an-1;i++)//循環(huán)人數(shù)-1次{do{k=rand()%6+1;//隨機生成1-6}while(k>=an/2);for(j=0;j<k;)//走k步{if(arr[now]==0)//如果當前這個沒有被淘汰{j++;//走一步now++;//到下一個人}else{now++;//不走 到下一個人}if(now>=an)now-=an;//超出最大范圍 從0重新開始}arr[(now+an-1)%an]=1;//找到要淘汰的人printf("本輪色子為:%d\n",k);printf("本輪編號為%d的%s被淘汰!\n",(now+an-1)%an+1,a[(now+an-1)%an].name);}for(i=0;i<an;i++)//尋找最后一個沒被淘汰的人 并且記錄下來{if(arr[i]==0){printf("恭喜編號為:%d的%s獲得所有獎品!\n",i+1,a[i].name);strcpy(r[rn].a.name,a[i].name);}}system("pause");return rn+1; }void History(Record r[],int n)//顯示獲獎記錄 {int i;system("cls");if(n==0){printf("無獲獎記錄!\n");system("pause");return;}printf("%-10s%-10s%-10s%-10s%-10s%-10s%-10s\n","獲獎人","獎品1","價格","獎品2","價格","獎品3","價格");for(i=0;i<n;i++){printf("%-10s%-10s%-10.2f%-10s%-10.2f%-10s%-10.2f\n",r[i].a.name,r[i].b[0].name,r[i].b[0].price,r[i].b[1].name,r[i].b[1].price,r[i].b[2].name,r[i].b[2].price);}system("pause"); }int main() {int choice;Player p[100];int pn=LoadPlayer(p);//加載文件Price p2[100];int p2n=LoadPrice(p2);Record r[100];int rn=LoadRecord(r);do{choice=menu();switch(choice){case 1:rn=StartGame(p,pn,p2,p2n,r,rn);break;case 2:History(r,rn);break;case 3:pn=AddPlayer(p,pn);break;case 4:p2n=AddPrice(p2,p2n);break;}}while(choice!=0);SavePlayer(p,pn);SavePrice(p2,p2n);SaveRecord(r,rn);//保存文件return 0; }總結(jié)
以上是生活随笔為你收集整理的C语言小游戏-寻宝(幸运之星)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iOS短视频:基于GPUIMage的短视
- 下一篇: 前端必备:六款CSS工具让代码充满魅力