码迷,mamicode.com
首页 > 其他好文 > 详细

用C写的控制台的小游戏:running__worm

时间:2016-01-02 14:17:49      阅读:208      评论:0      收藏:0      [点我收藏+]

标签:

在小小的控制台内也可以做一些自娱自乐的小游戏,虽然其效果远不如利用游戏引擎如cocos2d、unity等做出的游戏效果,

但是实际玩起来还是挺有意思的。

还可以在丑陋的控制台上设计玩家界面。

下面为游戏介绍:

		printf("\n\t\t游戏规则\n");
				  printf("  在Run and turn的游戏中你将会是一只被诅咒的小虫子\n");
				  printf("  邪恶的诅咒使你必须不断前进(速度是不稳定的!)\n  通过不断吸收爱心来维持生命\n");
				  printf("  但拐弯需要消耗大量能量,在没吃到爱心时,仅有三次拐弯的体力\n");
				  printf("  吃到爱心后重新获得三次拐弯的体力,注意哦\n ");
				  printf("  别错过拐弯的机会哦!比比看谁爱心吃的多!\n");
				  printf("  拐弯由‘w‘,‘a‘,‘s‘,‘d‘控制,按两下w退出介绍");

 玩家游戏界面:技术分享

 

技术分享技术分享技术分享技术分享

 

源码:

#include <iostream>
#include <conio.h>
#include <stdio.h>
#include <windows.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>

char window[20][30];
int count=0;
void setup();
void putout();
void move();
void enter();
void putout2();
int main(void)
{
   int c;   
 enter();
    setup();
    move();
    c=getch();   
        c=getch();  
    while(c!=q)
    {
         setup();
        
       move();
       c=getch();
        c=getch();
      }
     
    return 0;
}
void enter()
{
    int i,j,c,step=1;
    //界面
    window[8][10]=G;
    window[8][11]=a;
    window[8][12]=m;
    window[8][13]=e;
    window[9][6]=R;
    window[9][7]=u;
    window[9][8]=n;
    window[9][9]= ;
    window[9][10]=a;
    window[9][11]=n;
    window[9][12]=d;
    window[9][13]= ;
    window[9][14]=T;
    window[9][15]=u;
    window[9][16]=r;
    window[9][17]=n;
    window[11][9]=16;
    window[11][10]=S;
    window[11][11]=t;
    window[11][12]=a;
    window[11][13]=r;
    window[11][14]=t;
    window[13][10]=H;
    window[13][11]=e;
    window[13][12]=l;
    window[13][13]=p;
    window[16][10]=P;
    window[16][11]=r;
    window[16][12]=e;
    window[16][13]=s;
    window[16][14]=s;
    window[16][15]= ;
    window[16][16]=d;




    putout();
    while(c=getch())
    {
        switch(c)
        {
        casew: cases:
             {
               if(step==1)
               {
                  window[11][9]= ;
                  window[13][9]=16;
                  step=2;
                  system("cls");
                  putout();
                  break;
               }
               
             
                if(step==2)
                {
                window[13][9]= ;
                    window[11][9]=16;
                    step=1;
                     system("cls");
                  putout();
                  }
                break;
            }
        cased:
            {
                if(step==1)
            goto finish;
                if(step==2)
                {
                  system("cls");
                    printf("\n\t\t游戏规则\n");
                  printf("  在Run and turn的游戏中你将会是一只被诅咒的小虫子\n");
                  printf("  邪恶的诅咒使你必须不断前进(速度是不稳定的!)\n  通过不断吸收爱心来维持生命\n");
                  printf("  但拐弯需要消耗大量能量,在没吃到爱心时,仅有三次拐弯的体力\n");
                  printf("  吃到爱心后重新获得三次拐弯的体力,注意哦\n ");
                  printf("  别错过拐弯的机会哦!比比看谁爱心吃的多!\n");
                  printf("  拐弯由‘w‘,‘a‘,‘s‘,‘d‘控制,按两下w退出介绍");

                     getch();
                  break;
                
                
                }
            }
        }
    
    
    
    
    }

finish:;



}


void setup()
{
   int i,j;
   
   for(i=0;i<20;i++)
       for(j=0;j<30;j++)
       {
           window[i][j]= ; 
       }

        putout();
}
void putout()
{
int i,j;
    for(i=0;i<20;i++)
       for(j=0;j<30;j++)
       {
       if(j==29)
       {
       printf("%c",window[i][j]);
       printf("\n");
       }
    else
    printf("%c",window[i][j]);
       }
}
void move()
{
    int m=18,n=10,x,y,step=0,num=0;
    int c,compare;
    FILE *fp1,*fp2;
    srand((int)time(NULL));
    window[m][n]=15;

    system("cls");
    putout();
    x=rand()%19+1;
    y=rand()%28+1;
    window[x][y]=3;
while(c=getch())
{    
    
        switch(c)
       {
        
       case w :
           {
    num=num+1;
       while(!kbhit())
       {
          window[m][n]= ;
           m=m-1;
           window[m][n]=15;
           system("cls");
           putout();
                   if(m==x&&n==y)
    {
      window[m][n]=15;
     system("cls");
     step=1;
      putout();
      num=0;
      count=count+1;
        }
        if(step==1)
        {
        step=0;
        x=rand()%19+1;
        y=rand()%28+1;
      window[x][y]=3;
      system("cls");
      putout();
        }

}
       if(num==3)
           goto finish;
         break;
           }
       case d:
        {
            num=num+1;
          while(!kbhit())
{
           window[m][n]= ;
           n=n+1;
           window[m][n]=15;
           system("cls");
           putout();
                   if(m==x&&n==y)
    {
      window[m][n]=15;
     system("cls");
     step=1;
      putout();
      num=0;
       count=count+1;
        }
        if(step==1)
        {
        step=0;
        x=rand()%19+1;
        y=rand()%28+1;
      window[x][y]=3;
      system("cls");
      putout();
        }

}
          if(num==3)
           goto finish;
              break;
        }
       case s:
           {
               num=num+1;
          while(!kbhit())
{
           window[m][n]= ;
           m=m+1;
           window[m][n]=15;
           system("cls");
           putout();
                   if(m==x&&n==y)
    {
      window[m][n]=15;
     system("cls");
     step=1;
      putout();
      num=0;
       count=count+1;
        }
        if(step==1)
        {
        step=0;
        x=rand()%19+1;
        y=rand()%28+1;
      window[x][y]=3;
      system("cls");
      putout();
        }

}
          if(num==3)
           goto finish;
              break;
           }
       case a :
           {
               num=num+1;
while(!kbhit())
{
           window[m][n]= ;
            n=n-1;
           window[m][n]=15;
           system("cls");
           putout();
        if(m==x&&n==y)
    {
      window[m][n]=15;
     system("cls");
     step=1;
      putout();
      num=0;
       count=count+1;
        }
        if(step==1)
        {
        step=0;
        x=rand()%19+1;
        y=rand()%28+1;
      window[x][y]=3;
      system("cls");
      putout();
        }
}
      if(num==3)
           goto finish;
              break;
       }    
    }
}
finish: {
           window[m][n]= ;
           window[x][y]= ;
           window[10][5]=Y;
           window[10][6]=O;
           window[10][7]=U;
           window[10][8]=R;
           window[10][9]= ;
           window[10][10]=S;
           window[10][11]=C;
           window[10][12]=O;
           window[10][13]=R;
           window[10][14]=E;
           window[10][15]=:;
           window[10][16]=3;
           window[10][17]=*;
           window[10][18]=count;
           window[8][10]=Y;
           window[8][11]=O;
           window[8][12]=U;
           window[8][13]= ;
           window[8][14]=L;
           window[8][15]=O;
           window[8][16]=S;
           window[8][17]=E;
           window[8][18]=!;
           window[12][3]=P;
           window[12][4]=r;
           window[12][5]=e;
           window[12][6]=s;
           window[12][7]=s;
           window[12][8]= ;
           window[12][9]=a;
           window[12][10]=n;
           window[12][11]=y;
           window[12][12]= ;
           window[12][13]=k;
           window[12][14]=e;
           window[12][15]=y;
           window[12][16]= ;
           window[12][17]=t;
           window[12][18]=o;
           window[12][19]= ;
           window[12][20]=r;
           window[12][21]=e;
           window[12][22]=t;
           window[12][23]=r;
           window[12][24]=y;
           window[14][3]=P;
           window[14][4]=r;
           window[14][5]=e;
           window[14][6]=s;
           window[14][7]=s;
           window[14][8]= ;
           window[14][9]=q;
           window[14][10]= ;
           window[14][11]=t;
           window[14][12]=o;
            window[14][13]= ;
             window[14][14]=Q;
              window[14][15]=u;
               window[14][16]=i;
                window[14][17]=t;
                fp1=fopen("record.txt","rb");
        
                fscanf(fp1,"%d",&compare);
                if(count>compare)
                {
                     system("cls");
                     printf("\n\n\n\n\n\n\n\tBreak the Record!");
                     Sleep(2000);
                     fclose(fp1);
                     fp2=fopen("record.txt","w+");
                     fprintf(fp2,"%d",count);
                     fclose(fp2);
                
                
                
                }
          
        }
        system("cls");
        putout2( );
    
}
void putout2()
{
   int i,j;
    for(i=0;i<20;i++)
       for(j=0;j<30;j++)
       {
       if(j==29)
       {
       printf("%c",window[i][j]);
       printf("\n");
       }
    else if(i==10&&j==18)
        printf("%d",count);
    else
    printf("%c",window[i][j]);
       }
}

 

用C写的控制台的小游戏:running__worm

标签:

原文地址:http://www.cnblogs.com/fuzzer/p/5094586.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!