Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
4
Добавлен:
18.08.2019
Размер:
4.06 Кб
Скачать
#include <stdio.h>
#define N 1000
#define n 11
#define IA 16807
#define IM 2147483647
#define AM (1./IM)
#define IQ 127773
#define IR 2836
#define MASK 123456789
static long dummy;
void Seed(long dum) {dummy=dum;}
// возвращает случайное число на промежутке от 0 до 1
float unirand0(void) {
 long k;
 float ans;
 dummy^=MASK;// избегаем dummy==0
 k=dummy/IQ;
 if((dummy=IA*(dummy-k*IQ)-IR*k)<0) dummy+=IM;
 ans=AM*dummy;
 dummy^=MASK;// восстанавливаем dummy
 return(ans);
}
int X=18;
int myrand()
{

int m=2017;
int a=214013,c=2531011;
    X = (a*X+c)%m;
return X;
}

int onethrow()
{
int y=0;
float x;
float Pk[n+1]={0,1./36.,3./36.,6./36.,10./36.,15./36.,21./36.,26./36.,30./36.,33./36.,35./36.,1};

    //x=myrand()/(0x7FF+1.);
    x = unirand0();
    for(int j=0;j<n+1;j++)
        if((x>Pk[j])&&(x<Pk[j+1]))y=j+2;
        //printf("X = %f\n",x);
        return y;
}

void testmode()
{
   int r[N],flag=1;
for(int j=0;j<N;j++)
{
    r[j]=onethrow();
    if(r[j]==0)
        {
         printf("ERROR %d\n", j);
         flag=0;
         break;
        }
  //printf("====%d\n", r[j]);
}
if(flag)printf("There are no mistakes. Cycle = %d\n", repeatsearcher(r));
}

int repeatsearcher(int *x)
{
 int evr=0,c;
for(int j=1;j<N;j++)
    {


    if(x[j]==x[0])
        {
         evr=j;c=0;
         for(int k=j+1;k<N;k++)
            if(x[k]==x[k-j]) c++;
                else break;
             //printf("cyyyyycle %d\n",c);
        if(c==N-1-j)break;

        }
    }
return evr;
}

void CvsV()
{
;
}

int computerdesigion(int sc,int lmt,int sp)
{
    int des = 1;
    //int Bon[n]={2,3,4,5,6,7,8,9,10,11,12};
    //float Pk[n]={1./36.,2./36.,3./36.,4./36.,5./36.,6./36.,5./36.,4./36.,3./36.,2./36.,1./36.};
   if(sc>sp)//если комп выигрывает
    if((lmt-sc)<n-2)
        des=0;
   if(sc<=sp)//если комп проигрывает
    if((lmt-sc)<n-5)
        des=0;
    return des;
}

int main()
{
//int x;
//FILE *fp = fopen("secret.txt","r");
//scanf(fp,"%d",&x);

int flag = 1,sw,ct;
int item,choise,limit,scorep,scorec,turn;
while(flag){
printf("\nGame bones v0.7\n");
printf("\n Main menu\n");
printf("0 - Exit game\n");
printf("1 - Test random generator\n");
printf("2 - Start game\n");
//printf("3 - \n");
//printf("4 - \n");
scanf("%d", &item);
scorec = 0;
scorep = 0;
sw = 1;
ct = 0;//check turn
X++;
switch(item)
    {
    // Выход из программы
    case 0:
    flag = 0;
    break;

    case 1:
    testmode();
    break;

    case 2:
    printf("Input limit\n");
    scanf("%d",&limit);
    while(sw)
    {
     printf("\nYour score: %d\nComp score: %d\n",scorep,scorec);
     printf("0 - Return to main menu\n1 - Make drop\n2 - Check turn\n");
     scanf("%d",&choise);
     switch(choise)
     {
         case 0:
         sw = 0;
         break;

         case 1:
         turn = onethrow();
         scorep += turn;
         printf("You dropped: %d\n",turn);
         if(scorep>=limit)
         {
         printf("\nYou lose ('_')\n");
         sw = 0;
         }
         break;

         case 2:
         ct = 1;
         if(scorep>=limit)
         {
         printf("\nYou lose ('_')\n");
         sw = 0;
         }
         break;
     }
if(sw)
if(computerdesigion(scorec,limit,scorep))
    {
    turn = onethrow();
    scorec+=turn;
    printf("Computer dropped: %d\n",turn);
    }
    else
    {
     printf("Comp check turn\n");
     ct++;
    }
    if(ct>=2)
        if(scorep>scorec)scorec+=limit;
        else scorep+=limit;

    if(scorec>limit)
         {
         printf("\nYou win! (^0^)\n");
         sw = 0;
         }

    }

    break;

    case 3:
    CvsV();

    break;

    default:
    printf("WRONG COMMAND!\n");
    }
}
//fclose(fp);
printf("The end\n");
    return 0;
}
/*
0.027778  2
0.083333  3
0.166667  4
0.277778  5
0.416667  6
0.583333  7
0.722222  8
0.833333  9
0.916667  10
0.972222  11
1.000000  12
*/
Соседние файлы в папке Bonesgame
  • #
    18.08.20191.15 Кб4Bonesgame.cbp
  • #
    18.08.2019185 б4Bonesgame.depend
  • #
    18.08.2019449 б4Bonesgame.layout
  • #
    18.08.20194.06 Кб4main.c
  • #
    18.08.20192 б6secret.txt