c产生随机数

来源:互联网 发布:gta5低配优化 编辑:程序博客网 时间:2024/06/08 09:49

c产生随机数一个公式:  导入"stdlib"头文件 然后:rand()%n(ps:产生的数范围在[0~n)内,要哪个范围就将n定为该数字

附上一个用到的简单c游戏:

#include<stdio.h>  
#include<stdlib.h>  
#include<time.h>  
#include<conio.h>  
int step=0;  
void map()//游戏菜单函数。  
{   
system("title 拼图游戏!"); 
printf("▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");  
    printf("█     拼 图 游 戏        █\n");  
    printf("█      1.   3×3         █\n");  
    printf("█      2.   4×4         █\n");  
    printf("█      3.   5×5         █\n");  
    printf("█      4.   退出         █\n");  
    printf("▇▇▇▇▇▇▇▇▇▇▇▇▇▇\n");  
}  
void fun(int *a,int t,int m,int r)  
{  
    int i;  
    int g;  
    for(i=0;i<m;i++)  
    {  
        if(i%r==(r-1)&&(i+t)%r==0)//让数组不能跨行转换。  
            continue;  
        if(i%r==0&&(i+t)%r==(r-1))  
            continue;  
        if(a[i+t]==0 && (i+t)>=0 && (i+t)<m)      
        {  
            g=a[i];  
            a[i]=a[i+t];  
            a[i+t]=g;  
            step++;  
            return ;  
        }  
    }  
}  

void move(int *a,int m,int r)  
{//上下左右移动函数。  
    char ch;  
    int i,j;  
    while(ch=getch())  
    {  
        system("cls");  
        if(ch=='w')  //上 
        {  
            i=-r;  
         fun(a,i,m,r);  
        }  
        else if(ch=='s') //下 
        {  
            i=r;  
            fun(a,i,m,r);  
        }  
        else if(ch=='a')  //左 
        {  
            i=-1;  
            fun(a,i,m,r);  
        }  
        else if(ch=='d')  //右 
        {  
            i=1;  
            fun(a,i,m,r);  
        }  
        else if(ch=='4')  
        {  
            printf("您已退出游戏,请下次再玩!\n");  
            exit(0);  
        }  
        for(i=0;i<m;i++)  
        {  
            if(a[i]==0)  
                printf("    ");  
            else  
                printf("%2d  ",a[i]);  
            if((i+1)%r==0)  
            putchar(10);  
        }  
        printf("共走:%d步!\n",step);  
    }  
}  
void map_x(int m,int r)  
{  
    int i=1,j,a[25],n;  
    srand(time(NULL));  
    printf("拼图游戏开始了:\n");  
    while(i<m)  
    {  
        n=1+rand()%(m-1);  
        for(j=1;j<i;j++)  
        {  
            if(n==a[j])  
                break;  
        }  
        if(j==i)  
        {  
            a[i]=n;  
            i++;  
        }  
    }  
    a[0]=0;  
    for(i=0;i<m;i++)  
    {  
        if(a[i]==0)  
            printf("    ");  
        else  
            printf("%2d  ",a[i]);  
        if((i+1)%r==0)
            putchar(10);  
    }  
    printf("共走:%d步!\n",step);  
    move(a,m,r);  
}
int main()  
{  
    int i;  
    char ch;  
    map();//显示菜单。  
    printf("请选择所玩游戏的级别:\n");  
    ch=getch();  
    while(ch!='1' && ch!='2' && ch!='3' &&ch!='4')  
    {  
        printf("输入有误,请重新输入:\n");  
        ch=getch();  
    }  
    switch(ch)  
    {  
        case '1':   
            map_x(9,3);  
            break;
        case '2':  
            map_x(16,4);  
            break;  
        case '3':  
            map_x(25,5);  
            break;  
        case '4':  
            printf("您已退出游戏,请下次再玩!\n");  
            exit(0);  
            break;  
    }  
    return 0;  
}  
  
//对于确定的循环一般用for;而不确定的循环则用while

原创粉丝点击