找回密码
 入驻
搜索
查看: 131082|回复: 2

文曲星小游戏

[复制链接]
发表于 2007-5-25 18:44:07 | 显示全部楼层 |阅读模式
/*这是文曲星里的小游戏,本人用C语言将其编出并添加破纪录功能。游戏规则:随机产生4个数字,由玩家输入4个不重复的数字(如:8 3 1 2)按回车后电脑给出提示,其形式为"?A?B".你所输入的四位数中,位置和数字都正确则为A,数字相同但位置不相同时为B,你只可以猜10次,若你所用的次数小于纪录保持者,则为破纪录。小作一篇,请多请教!
广东工业大学 廖龙彪QQ:316688817   http://russia.e63.cn (俄罗斯记事本!欢迎访问!!)*/

#include<stdlib.h>
#include<time.h>
#include<stdio.h>
struct player /*创立结构体*/
{
    char name[20];
    int score ;
}
player ;
int a[5],b[5],n1,n2,n3,i,j ;/*n1计算位置数字相同的数字个数n2计算数字相同但位置不相同的数字个数n3计算所猜次数*/
char ch ;
main()
{
    goread();/*调用读取破纪录者函数*/
    loop1 :
    clrscr();/*清屏*/
    n1=0 ;
    n3=0;
    getnumber();/*调用随机产生4个数的函数*/
    while(n1<4&&n3<10)
    {
        ++n3 ;
        n1=0 ;
        n2=0 ;
        printf("The top player:%s by only %i times Guess 4 numbers:",player.name,player.score);
        for(i=1;i<=4;i++)
        scanf("%d",&b);
        for(i=1;i<=4;i++)
        {
            if(a==b)
            {
                n1++;
                continue ;
            }
            for(j=1;j<=4;j++)
            if(b==a[j])n2++;
        }
printf("%dA%dB you have guessed %d times\n",n1,n2,n3);
    }
    if(n3>10)printf("you blew it,the answer is %d%d%d%d",a[1],a[2],a[3],a[4]);
    else
    {
        printf("Congratulastions!you finish it by %d times\n",n3);
        if(n3<player.score)
        breakrecord();/*调用新纪录者函数*/
    }
    getchar();
    printf("Do you wanna play it again?(y/n)\n");
    ch=getchar();
    if(ch=='y')goto loop1 ;
}
goread()/*读取破纪录者函数*/
{
    FILE*fp ;
    if((fp=fopen("player.txt","rb"))==NULL)
    {
        newset();/*调用初始化纪录者函数*/
        fp=fopen("player.txt","rb");
    }
    if(fread(&player,sizeof(struct player),1,fp)!=1)
    printf("file write error");
    fclose(fp);
}
newset()/*初始化纪录者函数*/
{
    struct player
    {
        char name[20];
        int score ;
    }
   
    player=
    {
        "along",10
    }
    ;
    FILE*fp ;
    if((fp=fopen("player.txt","wb"))==NULL)
    {
        printf("file open error\n");
        return ;
    }
    if(fwrite(&player,sizeof(struct player),1,fp)!=1)
    printf("file write error");
    fclose(fp);
   
}
getnumber()/*随机产生4个数的函数*/
{
    randomize();
    for(i=1;i<=4;i++)
    loop2 :
    {
        a=rand()%10 ;
        for(j=i-1;j>=1;j--)
        if(a==a[j])goto loop2 ;
        
    }
}
breakrecord()/*新纪录者函数*/
{
    printf("What is you name?");
    scanf("%s",&player.name);
    player.score=n3 ;
    {
        FILE*fp ;
        if((fp=fopen("player.txt","wb"))==NULL)
        {
            printf("file open error\n");
            return ;
        }
        if(fwrite(&player,sizeof(struct player),1,fp)!=1)
        printf("file write error");
        fclose(fp);
    }
}
发表于 2007-5-25 18:47:08 | 显示全部楼层
:sad 没看懂~
回复

使用道具 举报

发表于 2007-5-25 20:13:21 | 显示全部楼层
:funk 又是这种~~~~~~~~~~晕了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 入驻

本版积分规则

QQ|Archiver|手机版|小黑屋|思明论坛

GMT+8, 2024-11-16 20:28 , Processed in 0.056731 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表