C语言猜数游戏,怎么才能开始游戏后并输入正确密码后进行游戏?

Python020

C语言猜数游戏,怎么才能开始游戏后并输入正确密码后进行游戏?,第1张

方法一:

给你的登录函数( logon)添加一个返回值,登录成功返回1,失败返回0。

在main函数case里调用logon时,验证返回值。

方法二:

三次密码错误后(printf("三次均错误,退出程序\n")这句后面),exit函数直接结束程序(头文件stdlib.h)。

//小游戏:猜数字 随机一个1-100之间的数,根据数据输入进行提示

#include <stdlib.h>

#include <time.h>

int main(void){

int value=0

int num=0

srand((unsigned int) time(NULL))

num=rand()%100+1//1-100

while(1){

scanf("%d",&value)

if(num>value){

printf("您猜小了\n")

}

else if(num<value){

printf("您猜大了\n")

}

else if(num=value){

printf("恭喜您猜对了\n")

break

}

}

return 0

}

小游戏2048:

#include<stdio.h>

#include<stdlib.h>

#include<conio.h>

#include<time.h>

#include<windows.h>

int  jsk( )  //计算空格数

void rsgm( ) //重置游戏

void inkey( )  //按键输入

void left( )  //向左移动

void right( ) //向右移动

void up( )  //向上移动

void down( )  //向下移动

void show( )  //输出界面

void adnum( )//添加随机数

void yes( )   //游戏是否结束(1是0否)

void gtxy(int x, int y)//控制光标位置的函数

int a[4][4]   //存储16个格子中的数字

int score = 0  //每局得分

int best = 0  //最高得分

int ifnum  //是否需要添加数字(1是0否)

int over  //游戏结束标志(1是0否)

int i,j,k

int main( )

{ rsgm( ) //重置游戏

  inkey( ) //按键输入

  return 0

}

void Color(int a)   //设定字符颜色的函数(a应为1-15)

SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),a)  }

void rsgm( )   //重置游戏

{ score = 0ifnum = 1over = 0srand((unsigned)time(0))  //启动随机数发生器

int n = rand( ) % 16  //随机函数产生0-15的数字

for (i = 0i <4i++)

{for (j = 0j <4j++)

   { if (n == 0) { int k = rand( ) % 3if (k == 0 || k == 1) { a[i][j] = 2}

                        else { a[i][j] = 4} n--}

     else { a[i][j] = 0n--}

   }

}

adnum( )

system("cls")

CONSOLE_CURSOR_INFO gb={1,0}  //以下两行是隐藏光标的设置,gb代指光标

SetConsoleCursorInfo( GetStdHandle(STD_OUTPUT_HANDLE), &gb )

Color(14)  //设置字体淡黄色

printf("\n\n\t\t  2048小游戏")Color(7)  //恢复白字黑底

printf("\n\t┌──────┬──────┬──────┬──────┐")

printf("\n\t│      │      │      │      │")

printf("\n\t├──────┼──────┼──────┼──────┤")

printf("\n\t│      │      │      │      │")

printf("\n\t├──────┼──────┼──────┼──────┤")

printf("\n\t│      │      │      │      │")

printf("\n\t├──────┼──────┼──────┼──────┤")

printf("\n\t│      │      │      │      │")

printf("\n\t└──────┴──────┴──────┴──────┘")

show( )

}

void show( )   //输出界面

{ for(i=0i<4i++)

for(j=0j<4j++)

   { gtxy(7*j+9,2*i+4)  //gtxy(7*j+9, 2*i+4)是光标到指定位置输出数字

     if(a[i][j]==0){printf("      ")Color(7)printf("│")}

     else if(a[i][j]<10){ if (a[i][j] == 2) { Color(14)}

                                else if (a[i][j] == 4) { Color(13)}

                                else if (a[i][j] == 8) { Color(12)}

                                printf("   %d  ", a[i][j])Color(7 )printf("│")

                              }

    else if (a[i][j] <100){if (a[i][j] == 16) { Color(12)}

                                   else if (a[i][j] == 32) { Color(10)}

                                   else if (a[i][j] == 64) { Color(2 )}

                                   printf("  %d  ", a[i][j])Color(7)printf("│")

                                 }

   else if (a[i][j] <1000) {if (a[i][j] == 128) { Color(9)}

                                       else if (a[i][j] == 256) { Color(1)}

                                       else if (a[i][j] == 512) { Color(13)}

                                       printf("  %d ", a[i][j])Color(7)printf("│")

                                     }

    else if (a[i][j] <10000) {if (a[i][j] == 1024) { Color(5)}

                                         else { Color(15)}

                                         printf(" %d ", a[i][j])Color(7)printf("│")

                                       }

}

if (jsk( ) == 0)

  {  yes( )  if (over) { gtxy(9,12)Color(10)

                                printf("\n\n  游戏结束!是否继续? [ Y/N ]:")}

  }

}

void inkey( )   //按键输入

{ int key

while (1)

    { key = getch( )

      if (over) { if (key == 89|| key == 121) { rsgm( )continue}

                      else  if (key == 78|| key == 110) { return}

                      else  continue}

      ifnum = 0

     if(key==224)key=getch( )

        switch (key)

            { case 75: left( )break

              case 77: right( )break

              case 72: up( )break

              case 80: down( )break

}

  if (score >best) { best = score}

  if (ifnum) { adnum( )show( )}

}

}

int jsk( )   //计算空格数

{ int n = 0

for (i = 0i <4i++)

   { for (j = 0j <4j++) { if ( a[i][j] == 0) {n++}  }   }

return n

}

void left( )   //向左移动

{ for (i = 0i <4i++)

{for (j = 1, k = 0j <4j++)

    { if (a[i][j] >0)

       { if ( a[i][k] == a[i][j])

             { a[i][k] *= 2  k++

                score = score + 2 * a[i][j]

                a[i][j] = 0 ifnum = 1}

          else if ( a[i][k] == 0) { a[i][k] = a[i][j]a[i][j] = 0ifnum = 1}

          else { a[i][k + 1] = a[i][j]if ((k + 1) != j) { a[i][j] = 0ifnum = 1}

          k++}

       }

     }

}

}

void right( )   //向右移动

{for (i = 0i <4i++)

  {for (j = 2, k = 3j >= 0j--)

     {if (a[i][j] >0)

        { if (a[i][k] == a[i][j])

               {a[i][k] *= 2k--score = score + 2 * a[i][j]a[i][j] = 0ifnum = 1}

    else if ( a[i][k] == 0) {a[i][k] = a[i][j]a[i][j] = 0ifnum = 1}

    else { a[i][k - 1] = a[i][j]if ((k - 1) != j) { a[i][j] = 0ifnum = 1} k--}

   }

     }

}

}

void up( )   //向上移动

{for (i = 0i <4i++)

{for (j = 1, k = 0j <4j++)

     {if (a[j][i] >0)

         {if ( a[k][i] == a[j][i]) { a[k][i] *= 2k++score = score + 2 * a[j][i]

                                           a[j][i] = 0ifnum = 1}

          else if ( a[k][i] == 0) { a[k][i] = a[j][i]a[j][i] = 0ifnum = 1}

          else { a[k + 1][i] = a[j][i]if ((k + 1) != j) { a[j][i] = 0ifnum = 1}

          k++}

   }

    }

}

}

void down( )   //向下移动

{ for (i = 0i <4i++)

{for (j = 2, k = 3j >= 0j--)

  {if (a[j][i] >0)

     {if (a[k][i] == a[j][i])

          {a[k][i] *= 2k--score = score + 2 * a[j][i]a[j][i] = 0ifnum = 1}

       else if (a[k][i] == 0) {a[k][i] = a[j][i]a[j][i] = 0ifnum = 1}

       else {a[k - 1][i] = a[j][i]

                if ((k - 1) != j) {a[j][i] = 0ifnum = 1} k--}

      }

   }

}

}

void adnum( )   //添加随机数

{ srand(time(0))int n = rand( ) % jsk( )

for (int i = 0i <4i++)

   {for (int j = 0j <4j++)

      { if (a[i][j] == 0) {if (n != 0) { n--}

        else {int k = rand( ) % 3

                if (k == 0 || k == 1) {a[i][j] = 2return}

                else {a[i][j] = 4return} }

      }

   }

}

}

void yes( )   //游戏是否结束

{ for (int i = 0i <4i++)

{for (int j = 0j <3j++)

     {if (a[i][j] == a[i][j + 1] || a[j][i] == a[j + 1][i]) {over = 0return}}

}

over = 1

}

void gtxy(int x, int y)   //控制光标位置的函数

{ COORD zb  //zb代指坐标

zb.X = x

zb.Y = y

SetConsoleCursorPosition(GetStdHandle(STD_OUTPUT_HANDLE), zb)

}