• C语言 拼图小游戏


    /*拼成后不能顺利退出 (有谁感兴趣拼成后说下结果)*/
    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<time.h>
    int main()
    {
           int a[25],b,n,k,i=0,j,temp,h,y,flag,sum=0;
           char f;
           puts("********************");
           puts("*  1       3x3     *");
           puts("*  2       4x4     *");
           puts("*  3       5x5     *");
           puts("*  4       退出    *");
           puts("********************");
           puts("选择:");
           while(1)
           {
                  scanf("%d",&b);
                  system("cls");
                  if(b==1)
                        h=3;
                  else
                        if(b==2)
                              h=4;
                  else
                        if(b==3)
                              h=5;
                  else
                        if(b==4)
                              exit(1);
                  n=h*h;
                  srand(time(NULL));
                  while(i<n-1)//出图
                  {
                         a[n-1]=0;
                         k=rand()%(n-1)+1;
                         for(j=0;j<i;j++)
                              if(a[j]==k)
                                  break;
                         if(j==i)
                         {
                              a[j]=k;
                              i++;
                         }
                  }
                  for(i=0;i<n;i++)
                  {
                         if(a[i]==0)
                                printf("%3s","_");
                         else
                                printf("%3d",a[i]);
                        if((i+1)%h==0)
                                puts("");
                   }
                 printf("\n\n共移动了%d次!\n",sum);//出图
    
                 y=n-1;//移动
                 while(1)
                 {
                       flag=0;
                       f=getch();
                       if(f=='w')
                       {
                              for(i=0;i<h;i++)
                                      if(y==i)
                                            flag=1;
                              if(flag!=1)
                              {
    
                                       temp=a[y-h];
                                       a[y-h]=a[y];
                                       a[y]=temp;
                                       y=y-h;
                                       sum++;
    
                               }
                        }
                       else
                              if(f=='s')
                              {
                                      for(i=0;i<h;i++)
                                               if(y==h*(h-1)+i)
                                                        flag=2;
                                      if(flag!=2)
                                      {
    
                                               temp=a[y+h];
                                               a[y+h]=a[y];
                                               a[y]=temp;
                                               y=y+h;
                                               sum++;
    
                                       }
                              }
                       else
                              if(f=='a')
                              {
                                       for(i=0;i<h;i++)
                                               if(y==h*i)
                                                      flag=3;
                                       if(flag!=3)
                                      {
    
                                               temp=a[y-1];
                                               a[y-1]=a[y];
                                               a[y]=temp;
                                                y=y-1;
                                               sum++;
    
                                       }
                              }
                       else
                              if(f=='d')
                              {
                                       for(i=0;i<h;i++)
                                               if(y==h*i+(h-1))
                                                      flag=4;
                                       if(flag!=4)
                                       {
    
                                               temp=a[y+1];
                                               a[y+1]=a[y];
                                               a[y]=temp;
                                               y=y+1;
                                               sum++;
    
                                        }
                               }
                               system("cls");
                               for(i=0;i<n;i++)
                               {
                                        if(a[i]==0)
                                                printf("%3s","_");
                                        else
                                                printf("%3d",a[i]);
                                        if((i+1)%h==0)
                                                puts("");
                                }
                                printf("\n\n共移动了%d次!\n",sum);//出图
                                for(i=1,j=0;i<n;i++)
                                {
                                         if(a[j]==i)
    					 j++;
    			    }
                                if(j==n-1)
                                {
    				     puts("You win!"); 
    					exit(1); 
    	   		    }
            }//移动
         }
         return 0;
    }
    

      

  • 相关阅读:
    uCOS-II 学习笔记之任务管理--------任务控制块OS_TCB
    uCOS-II 学习笔记之事件管理--------信号量管理的学习
    格子计划
    phpcms二次开发之base.php的桥梁作用
    [leedcode 215] Kth Largest Element in an Array
    [leedcode 214] Shortest Palindrome
    [leedcode 213] House Robber II
    [leedcode 212] Word Search II
    [leedcode 211] Add and Search Word
    [leedcode 210] Course Schedule II
  • 原文地址:https://www.cnblogs.com/gaorui/p/2220090.html
Copyright © 2020-2023  润新知