作者a1013944 (ㄚ春)
看板C_and_CPP
标题[问题] 这个游戏小错误
时间Sat Apr 4 11:51:07 2009
#include <stdio.h>
#include <stdlib.h>
#include<time.h>
#include <string.h>
//void number();
void history_brd();
void view_history();
int main()
{
char history;//是否加入历史排行榜的选项
char brd_choice;//是否观看历史排行榜的选项
int y,w_t=0,l_t=0;
do{
int s;
int w=0,l=0,n1;
printf("请输入你要的局数(一场)\n");
scanf("%d",&n1);
n1=(n1+1)/2;
do{
srand(time(NULL));
int n=rand()%3+1;
printf("%d",n);
printf("(1剪刀 (2石头 (3布\n");
printf("请输入你的选择\n");
scanf("%d",&s);
if(n==1&&s==1)
{
printf("你出剪刀!!\n");
printf("电脑出剪刀\n");
printf("平手唷!!!\n");
}
else if(n==1&&s==2)
{
printf("你出石头!!\n");
printf("电脑出剪刀\n");
printf("你赢罗!!\n");
w=w+1;
}
else if(n==1&&s==3)
{
printf("你出布\n");
printf("电脑出剪刀\n");
printf("你输罗!!!\n");
l=l+1;
}
else if(n==2&&s==2)
{
printf("你出石头!!\n");
printf("电脑出石头\n");
printf("平手唷!!!\n");
}
else if(n==2&&s==1)
{
printf("你出剪刀!!\n");
printf("电脑出石头\n");
printf("你输罗!!\n");
l=l+1;
}
else if(n==2&&s==3)
{
printf("你出布!!\n");
printf("电脑出石头\n");
printf("你赢罗!!!\n");
w=w+1;
}
else if(n==3&&s==3)
{
printf("你出布!!\n");
printf("电脑出布\n");
printf("平手唷!!!\n");
}
else if(n==3&&s==2)
{
printf("你出石头!!\n");
printf("电脑出布\n");
printf("你输罗!!\n");
l=l+1;
}
else if(n==3&&s==1)
{
printf("你出剪刀!!\n");
printf("电脑出布\n");
printf("你赢罗!!!\n");
w=w+1;
}
}while( w<n1 && l<n1);
if(w==n1)
{
printf("你赢了此场\n");
w_t=w_t+1;
}
else if(l==n1)
{
printf("你输了此场\n");
l_t=l_t+1;
}
printf("想继续玩请按1\n");
scanf("%d",&y);
printf("你目前的战绩为%d胜%d败\n",w_t,l_t);
}while(y==1);
printf("你的最终战绩为%d胜%d败\n",w_t,l_t);
printf("\n是否要加入历史排行榜?(y/n)");
fflush(stdin);
scanf("%c",&history);
if(history == 'y')
{
history_brd();
printf("是否观看历史排行榜 ? (y/n)");
fflush(stdin);
scanf("%c",&brd_choice);
if(brd_choice == 'y')
{
view_history();
}
}
system("pause");
return 0;
}
void history_brd(int w_t,int l_t)
{
FILE *out;
char name[50];
time_t timep;
time (&timep);
out = fopen("board.bin","a+");
printf("\n请输入你的姓名 : ");
scanf("%s",name);
fprintf(out,"%s总共在猜拳游戏中%d胜%d败 %s",name,w_t,l_t,ctime(&timep));
fclose(out);
system("pause");
}
void view_history()
{
char list[200];
FILE *inp;
inp = fopen("board.bin","a+");
system("cls");
//while(!feof(inp))
while(fscanf(inp,"%s", &list) != EOF)
{
printf("%s\n",list);
memset(list,0,sizeof(char)*200);
fgets(list,199,inp);
printf("%s\n",list);
}
fclose(inp);
system("pause");
}
这个游戏我之前可以执行
没想到存档後 要再次执行出现这个
[Linker error] undefined reference to `history_brd()'
ld returned 1 exit status
请问这个怎麽改
感谢万分!!
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 218.172.86.214
1F:→ tsaiminghan:fopen 读档时,用的应该不是a+,还有程式码太长时 04/04 12:42
2F:→ tsaiminghan:用公告的网页来贴程式码 04/04 12:43
3F:→ MOONRAKER:每一种组合都恭喜一次,好累的程式 XD 04/04 12:52
4F:→ a1013944:欧 谢谢指教 新手@@慢慢学习 04/04 12:53
5F:→ MOONRAKER:弄个胜负matrix不就好了 没人教你啊? 04/04 13:08
6F:→ firedcf:非常不专业的改了九次.最後发现srand前面加上 // 就过了XD 04/04 15:30
7F:→ firedcf:忘了说... fopen的a+我有改成 ab XD 04/04 15:31
8F:→ tsaiminghan:所以那边是有什麽问题啊? 04/04 15:31
9F:→ firedcf:因为不专业,所以我也不知道XD .. >///< .. 04/04 15:50
10F:→ tsaiminghan:刚刚发现一个无关的问题,不用包string.h,没用到 04/04 16:10