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

Python019

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

//小游戏:猜数字 随机一个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

}

源码如下:

/* File: guess.c */

#include <stdio.h>  /* standard input & output support */

#include <stdlib.h> /* srand() rand() */

#include <time.h>   /* time() */

/* 宏定义 */

#define NUMBER_LENGTH   5   /* 随机数长度 */

#define NUMBER_LIMIT    10  /* 随机数限制, 每一位0-9 */

#define INPUT_LENTH     128 /* 输入缓冲区大小 */

char goal[NUMBER_LENGTH]    = {0}  /* 保存随机数 */

char flag[NUMBER_LIMIT]     = {0}  /* 保存随机数标志, 保证不重复 */

char input[INPUT_LENTH]     = {0}  /* 保存输入 */

/* 初始化用于保存数据的数组 */

void initData()

{

int i = 0

while (i < NUMBER_LENGTH)

goal[i++] = 0

i = 0

while (i < NUMBER_LIMIT)

{

flag[i++] = 0

}

}

/* 初始化用于保存缓冲区的数组 */

void initBuffer()

{

int i = 0

while (i < INPUT_LENTH)

input[i++] = 0

}

/* 显示猜测结果 */

void display()

{

int count = 0

int i = 0

while (i < NUMBER_LENGTH)

{

if (input[i] == goal[i])

{

printf("%c", 'o')

count++

}

else

{

printf("%c", 'x')

}

i++

}

printf("\nRIGHT: %d bit(s)\n", count)

if (count == NUMBER_LENGTH)

{

printf("You win! The number is %s.\n", goal)

exit(0)

}

}

/* 生成随机数 */

void general()

{

/* 以时间作为时间种子保证生成的随机数真正具有随机性质 */

srand((unsigned int)time(NULL))

int i = 0

while (i < NUMBER_LENGTH)

{

char tmp

do

{

tmp = '0' + ((i != 0) ? (rand() % 10) : (1 + rand() % 9))

} while (flag[tmp] != 0)

flag[tmp] = 1

goal[i++] = tmp

}

}

/* 输入方法,用于猜测 */

void guess()

{

printf("Please input the number you guessed:\n")

scanf("%s", input)

display()

initBuffer()

}

/* 主函数,程序主框架 */

int main (int argc, const char * argv[])

{

initData()

initBuffer()

general()

while (1) guess()

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)

}