• C语言:拼图小游戏


    #include<stdio.h>
    #include<stdlib.h>
    #include<conio.h>
    #include<time.h>
    int a[25],sum=0,flag=0,i=0,j;
    void Menu()//菜单
    {
    	puts("********************");
    	puts("*  1       3x3     *");
    	puts("*  2       4x4     *");
    	puts("*  3       5x5     *");
    	puts("*  4       退出    *");
    	puts("********************");
    }
    int Size()//图大小
    {
    	int b,h;
    	puts("选择:");
    	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);
    	return h;//h:图长和宽
    }
    void Show(int a[],int n,int sum,int h)//输出
    {
    	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);
    }
    int suiji(int h)//随机分布
    {
    	int n,k;
    	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++;
    		}
    	}
    	Show(a,n,sum,h);//输出
    	return n;
    }
    
    int Move(int n,int h)//移动
    {
    	int y,temp;
    	char f;
    	y=n-1;
    	while(1)
    	{
    		f=getch();
    		if(f=='w'||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'||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'||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'||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++;
    				}
    			}
    		Show(a,n,sum,h);//输出
    		/*for(i=1,j=0;i<n;i++)
    		{
    			if(a[j]==i)
    				j++;
    		}
    		if(j==n-1)
    		{
    			puts("You win!");
    			exit(1);
    		}*/
    	}//移动
    }
    void Exit(int a[],int n)
    {
    	for(i=1,j=0;i<n;i++)
    		{
    			if(a[j]==i)
    				j++;
    		}
    	if(j==n-1)
    	{
    		puts("You win!");
    		exit(1);
    	}
    }
    int main()
    {
    	int n,h,sum=0,*a;
    	Menu();//菜单
    	while(1)
    	{
    		h=Size();//图大小
    		n=suiji(h);//随机分布
    		Move(n,h);//移动
    		Exit(a,n);
        }
    	return 0;
    }
    

      

  • 相关阅读:
    Web负载均衡的几种实现方式
    DNS负载均衡
    NoSQL开篇——为什么要使用NoSQL
    mySQL优化 my.ini 配置说明
    mysql性能优化-慢查询分析、优化索引和配置
    MySQL性能优化的最佳20+条经验
    IOS的UIPickerView 和UIDatePicker
    IOS的KVC
    IOS中的通知NSNotification
    IOS对话框UIAlertView
  • 原文地址:https://www.cnblogs.com/gaorui/p/2225674.html
Copyright © 2020-2023  润新知