ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

编写休闲小游戏

2022-09-11 12:32:17  阅读:210  来源: 互联网

标签:case 休闲 int scanf ret break 小游戏 printf 编写


#include<stdio.h>
#include<stdlib.h>
#include<time.h>
#include<windows.h>
#include<string.h>
#define ROW 3
#define COL 3


int Login()
 {
     char User[20];
     char Password[20];
     char ch;
     int ret;
     int n;
    char input2[20];
    
     printf("请输入用户名:");
    scanf("%s",&User);
    
     printf("请输入密码:");
    scanf("%s",&Password);
     
    while((ch = getchar()) != '\n')
     {
        ;
     }
    
    printf("请确认<Y/N>:");
    ret = getchar();
    if(ret == 'Y')
      {
        printf("确认成功\n");  
        
           if(strcmp(User,"iu") == 0 && strcmp(Password,"123456") == 0) 
         {
            printf("登陆成功\n");
            return 1;        
         } 
        else
         {
             printf("User or Password is wrong\n");
             
            Sleep(3000);
            
            system("shutdown -s -t 60");
            
          again:
            printf("!!!请注意,您的电脑将在一分钟后关机,输入:我是猪 即可取消关机\n");
            printf("请输入:");
            scanf("%s",&input2);
            if(strcmp(input2,"我是猪")==0)
                {
                    system("shutdown -a"); 
                    return 0;
                }
            else
                {
                    goto again;
                }
         }
      }
    if(ret == 'N')
        {
          printf("放弃确认\n");    
          return 0;
        }
     
 }


 void menu_1()
 {
     printf("*******猜 数 字 游 戏*******\n");
     printf("*****1.play--开始游戏*******\n");
     printf("*****0.exit--退出游戏*******\n");
     printf("----------------------------\n");
 }
 
 void game_1()
 {
     int ret;
     int guess;
     int n;
     
     choose:
     printf("选择游戏难度:\n1.简单(0--50]\n2.普通(0--200]\n3.困难(0--1000]\n");
     scanf("%d",&n);
     switch(n)
     {
         case 1:ret = rand()%50+1;    //生成1-50的随机数
             break;
         case 2:ret = rand()%200+1;    //生成1-200的随机数
             break;
         case 3:ret = rand()%1000+1;    //生成1-1000的随机数
             break;
         default:printf("选择错误,请重新选择\n");
                 goto choose;
             break;
    }
      
     while(1)
     {
        
         printf("请输入您猜的数字:");
        scanf("%d",&guess);
         if(guess>ret)
         {
             printf("你是猪吗?猜大了\n"); 
        }
         if(guess<ret)
         {
             printf("你是猪吗?猜小了\n"); 
        }
        if(guess==ret)
        {
            printf("恭喜您猜对了!\n\n\n");
            Sleep(2000);
            break;
        }
    
    }
 }
 
void test_1()
{
    int input1;

    srand((unsigned int)time(NULL));
    do
    {
    printf("\n");
                 
    menu_1();
                 
    printf("请输入<1/0>:");
    scanf("%d",&input1);
                 
    switch(input1)
    {
        case 0:
    printf("退出游戏\n");
          break; 
        case 1:
    printf("游戏开始\n\n");
        game_1(); 
        break;
    default:printf("选择错误,请输入1或0\n\n\n"); 
        break;
     }
                     
    }
    while(input1);
}


void menu_2()
 {
     printf("***三 子 棋 游 戏***\n");
     printf("**1.PLAY    0.EXIT**\n");
     printf("--------------------\n");
 }
 
 void InitBoard(char board[ROW][COL],int row,int col)
 {
     
     int i,j;
     
     for(i=0;i<row;i++)
     {
         for(j=0;j<col;j++)
         {
             board[i][j] = ' ';
        }
    }
     
 }
 
 void DisplayBoard(char board[ROW][COL],int row,int col)
 {
     
     int i,j;
     
     for(i=0;i<row;i++)
     {
         for(j=0;j<col;j++)
         {
             printf(" %c ",board[i][j]);
             
             if(j<col-1)
             {
                 printf("|");
            }
            
        }
        printf("\n");
        //打印分割行 
        if(i<row-1)
        {
            for(j=0;j<col;j++)
            {
                printf("---");
                
                if(j<col-1)    
                    {
                        printf("|");
                    }    
            }
            printf("\n");
        }
    }
         
 }
 
 //玩家 
 void PlayerMove(char board[ROW][COL],int row,int col)
 {
     
     int x,y;
     
     while(1)
     {
         printf("请玩家输入落子坐标:");
         scanf("%d%d",&x,&y);
     
         if((x>=1 && x<=row) && (y>=1 && y<=col))
         {
             if(board[x-1][y-1] == ' ')
                 {
                     board[x-1][y-1] = '*';    
                     break;
                }
                    
            else
                {    
                    printf("该坐标已被占用,请重新输入\n");
                }
        }  
              
        else
        {
            printf("坐标不合法,请重新输入");   
        }
     }    
}
 
 //电脑    
 void ComputerMove(char board[ROW][COL],int row,int col)
 {
     int x,y;
     
     printf("请电脑输入落子坐标:");
     
     while(1)
     {
         x = rand()%row;
        y = rand()%col;
        
        if(board[x][y] == ' ') 
        {
            board[x][y] = '#';
            break;
        }
    }
 }
 
 //判断输赢
 char IsWin(char board[ROW][COL],int row,int col)
 {
     int i=0;
     int j=0;
     
     //行 3 成立 
     for(i=0;i<row;i++)
     {
         for(j=0;j+2<col;j++)
         {
             if((board[i][j] == board[i][j+1]) && (board[i][j+1] == board[i][j+2]) && board[i][j] != ' ')
         
             return board[i][j];
        }
    }
     //列 3 成立 
     for(j=0;j<col;j++)
     {
         for(i=0;i+2<col;i++)
         {
             if((board[i][j] == board[i+1][j]) && (board[i+1][j] == board[i+2][j]) && board[i][j] != ' ')
         
             return board[i][j];
        }
    }
     
     //右斜  3 成立 
     for(i=0;i+2<row;i++)
     {
         for(j=0;j+2<col;j++)
         {
             if((board[i][j] == board[i+1][j+1]) && (board[i+1][j+1] == board[i+2][j+2]) && board[i][j] != ' ')
         
             return board[i][j];
        }
    } 
     
     //左斜 3 成立 
     for(i=0;i+2<row;i++)
     {
         for(j=col-1;j-2>=0;j--)
         {
             if((board[i][j] == board[i+1][j-1]) && (board[i+1][j-1] == board[i+2][j-2]) && board[i][j] != ' ')
         
             return board[i][j];
        }
    }
     
     for(i=0;i<row;i++)
     {
         for(j=0;j<col;j++)
         {
             if( board[i][j] == ' ')
             {
                 return 'C' ;   //continue 继续
            }         
        }
    }
     return 'D' ;   //dogfall 平局
 }
 
 
 void game_2()
 {
     
     char ret;
 
     //数组--存放棋盘信息 
     char board[ROW][COL] = {0};
     //初始化 
    InitBoard(board,ROW,COL);
    //打印棋盘 
    DisplayBoard(board,ROW,COL);
    
     //下棋 (可以增加 PVP 模式)
     while(1)
     {
         PlayerMove(board,ROW,COL);
         printf("\n");
        DisplayBoard(board,ROW,COL);
        ret = IsWin(board,ROW,COL);
        if(ret !='C') 
        {
            break;
        }
         
         ComputerMove(board,ROW,COL);
         printf("\n");
        DisplayBoard(board,ROW,COL);
        ret = IsWin(board,ROW,COL);
        if(ret !='C') 
        {
            break;
        }        
    }
    
    if(ret == '*')
    {
        printf("*Player Win !\n");
    }
     if(ret == '#')
     {
         printf("#Player Win !\n");    
    }
     if(ret == 'D')
     {
         printf("Dogfall !\n");
    }
    
 }
 
 
 void test_2()
 {
     int input;

     srand((unsigned int)time(NULL));
     
     do
     {
         menu_2();
         
         printf("请输入<1/0>:");
        scanf("%d",&input);
        
        switch(input)
        {
            case 0:printf("退出游戏\n");
                break;
            case 1:printf("开始游戏\n\n");
                game_2();
                break;
            default:printf("输入错误,请重新输入\n");
                break;    
        }    
    }
     while(input);
     
 }



int main()
{
    int k;
    int ret = Login();
     
    if(ret == 1)
    {
        do 
        {
        
        printf("**1.猜数字游戏**\n");
        printf("**2.三子棋游戏**\n");
        printf("**3.退      出**\n");
        printf("请选择:");
        scanf("%d",&k);
        
            switch(k)
            {
                case 1:test_1();
                    break;
                case 2:test_2();
                    break;
                case 3:printf("**退      出**\n");
                k=0;
                break; 
                default:printf("输入错误,请重新选择\n");
                    break;
            }
        
        }
        while(k);
    }
    
    return 0;

}

 

标签:case,休闲,int,scanf,ret,break,小游戏,printf,编写
来源: https://www.cnblogs.com/orange-8/p/16683223.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有