⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 c编小游戏.txt

📁 这是一个小游戏!!!希望大家能够喜欢!!希望大家多多支持
💻 TXT
📖 第 1 页 / 共 5 页
字号:
      printboxin(x,y+2);printman(x,y+1);
      ghouse[x][y+2]='i';break;
    default: break;
  }
}

/* 移动在目的地上的箱子到目的地 */
moveinboxin(int x,int y,char a)
{
  switch(a)
  {
    case 'u':ghouse[x-1][y]='m';printf(" ");
      printboxin(x-2,y);printman(x-1,y);
      ghouse[x-2][y]='i';break;
    case 'd':ghouse[x+1][y]='m';printf(" ");
      printboxin(x+2,y);printman(x+1,y);
      ghouse[x+2][y]='i';break;
    case 'l':ghouse[x][y-1]='m';printf(" ");
      printboxin(x,y-2);printman(x,y-1);
      ghouse[x][y-2]='i';break;
    case 'r':ghouse[x][y+1]='m';printf(" ");
      printboxin(x,y+2);printman(x,y+1);
      ghouse[x][y+2]='i';break;
    default: break;
  }
}

/* 判断特定的坐标上的状态 */
int judge(int x,int y)
{
  int i;
  switch(ghouse[x][y])
  {
  case 0:   i=1;break;
  case 'w': i=0;break;
  case 'b': i=2;break;
  case 'i': i=4;break;
  case 'm': i=3;break;
  default: break;
  }
return i;
}

/* 处理按下键盘后,人物移动的主函数 */
move(int x,int y,char a)
{

   switch(a)
   {
     case 'u':if(!judge(x-1,y)) {gotoxy(y,x);break;}
       else if(judge(x-1,y)==1||judge(x-1,y)==3)
        {if(judge(x,y)==3)
  { printwhither(x,y);printman(x-1,y);break;}
  else
  {printf(" ");printman(x-1,y);break;}
        }
       else if(judge(x-1,y)==2)
               { if(judge(x-2,y)==1)
   {movebox(x,y,'u');
    if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1);
                  }
                else if(judge(x-2,y)==3)
   { moveboxin(x,y,'u');
    if(judge(x,y)==3) printwhither(x,y); gotoxy(y,x-1);
                  }
               else gotoxy(y,x);
               break;
               }
              else if(judge(x-1,y)==4)
               { if(judge(x-2,y)==1)
   {moveinbox(x,y,'u');
    if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x-1);
                  }
                else if(judge(x-2,y)==3)
   { moveinboxin(x,y,'u');
    if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x-1);
                  }
               else gotoxy(y,x);
               break;
               }
     case 'd':if(!judge(x+1,y))  {gotoxy(y,x);break;}
       else if(judge(x+1,y)==1||judge(x+1,y)==3)
               {if(judge(x,y)==3)
                { printwhither(x,y);printman(x+1,y);break;}
                else
                {printf(" ");printman(x+1,y);break;}
               }
              else if(judge(x+1,y)==2)
               { if(judge(x+2,y)==1)
    {movebox(x,y,'d');
    if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
                  }
                 else if(judge(x+2,y)==3)
   {moveboxin(x,y,'d');
    if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
                  }
               else gotoxy(y,x);
        break;
               }
              else if(judge(x+1,y)==4)
               { if(judge(x+2,y)==1)
    {moveinbox(x,y,'d');
    if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
                  }
                 else if(judge(x+2,y)==3)
   {moveinboxin(x,y,'d');
    if(judge(x,y)==3) printwhither(x,y);gotoxy(y,x+1);
                  }
               else gotoxy(y,x);
               break;
               }

     case 'l':if(!judge(x,y-1))  {gotoxy(y,x);break;}
       else if(judge(x,y-1)==1||judge(x,y-1)==3)
               {if(judge(x,y)==3)
                { printwhither(x,y);printman(x,y-1);break;}
  else
  {printf(" ");printman(x,y-1);break;}
  }
        else if(judge(x,y-1)==2)
               { if(judge(x,y-2)==1)
   {movebox(x,y,'l');
    if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x);
                  }
                 else if(judge(x,y-2)==3)
    {moveboxin(x,y,'l');
    if(judge(x,y)==3) printwhither(x,y);  gotoxy(y-1,x);
                  }
               else gotoxy(y,x);
               break;
               }
        else if(judge(x,y-1)==4)
               { if(judge(x,y-2)==1)
   {moveinbox(x,y,'l');
    if(judge(x,y)==3) printwhither(x,y); gotoxy(y-1,x);
                  }
                 else if(judge(x,y-2)==3)
    {moveinboxin(x,y,'l');
    if(judge(x,y)==3) printwhither(x,y);  gotoxy(y-1,x);
                  }
               else gotoxy(y,x);
               break;
               }
     case 'r':if(!judge(x,y+1))  {gotoxy(y,x);break;}
       else if(judge(x,y+1)==1||judge(x,y+1)==3)
               {if(judge(x,y)==3)
                 {printwhither(x,y);printman(x,y+1);break;}
               else
                 {printf(" ");printman(x,y+1);break;}
               }
              else if(judge(x,y+1)==2)
               { if(judge(x,y+2)==1)
    {movebox(x,y,'r');
    if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x);
                  }
                 else if(judge(x,y+2)==3)
   {moveboxin(x,y,'r');
    if(judge(x,y)==3) printwhither(x,y);  gotoxy(y+1,x);
                  }
               else gotoxy(y,x);
               break;
               }
              else if(judge(x,y+1)==4)
               { if(judge(x,y+2)==1)
    {moveinbox(x,y,'r');
    if(judge(x,y)==3) printwhither(x,y); gotoxy(y+1,x);
                  }
                 else if(judge(x,y+2)==3)
   {moveinboxin(x,y,'r');
    if(judge(x,y)==3) printwhither(x,y);  gotoxy(y+1,x);
                  }
               else gotoxy(y,x);
               break;
               }
     default: break;
   }
}

/* 按下空格键后,回到本关开头的函数 */
void reset(int i)
{
          switch(i)
        {
 case 0:  init();
   inithouse1();break;
 case 1:  init();
   inithouse2();break;
        case 2:  init();
   inithouse3();break;
 case 3:  init();
   inithouse4();break;  
 default:break;
 }
}

/* 主函数main */
void main()
{
   int key,x,y,s,i=0;
   winer *win,*pw;
   _AL=3;_AH=0;
   geninterrupt(0x10);
   init();
   win=inithouse1();

   do{
      _AH=3;
      geninterrupt(0x10);
      x=_DH+1;y=_DL+1;
      while(bioskey(1)==0);
      key=bioskey(0);
      switch(key)
      {
      case 0x4800:move(x,y,'u');break; /* 按下向上键后 */
      case 0x5000:move(x,y,'d');break; /* 按下向下键后 */
      case 0x4b00:move(x,y,'l');break; /* 按下向左键后 */
      case 0x4d00:move(x,y,'r');break; /* 按下向右键后 */
      case 0x3920:reset(i);break;      /* 按下空格键后 */
      default:break;
      }
     s=0;
     pw=win;
     while(pw)
     {
      if(ghouse[pw->x][pw->y]=='m') s++;
      pw=pw->p;
     }
     if(s==0)
     {
 free(win);
 gotoxy(25,2);
 printf("congratulate! you did a good job!");
 getch();
        i++;
        switch(i)
        {
        case 1:  init();
   win=inithouse2();break;
 case 2:  init();
   win=inithouse3();break;
 case 3:  init();
   win=inithouse4();break;
 case 4:  gotoxy(15,21);
   printf("My dear Friend, How smart you are! Welcome to play again!");
   key=0x011b;getch();break;
 default: break;
 }
     }

   }while(key!=0x011b);

_AL=3;
_AH=0;
geninterrupt(0x10);
}

迷宫程序1.10版
作者:董乘宇

程序目的:
输入一个任意大小的迷宫,用栈求出一条走出迷宫的路径,并
显示在屏幕上。
程序实现:
可以实现载入迷宫和保存迷宫,附带文件中有4个测试迷宫路径的
文件test1~4.dd。请将这些文件拷贝到TC当前目录下,或者在载
入时写明完全路径。由于屏幕大小的限制,当用户自己输入迷宫
时一定要注意:迷宫大小是有限制的,不小于4*3,不大于30*20。
否则会出现错误信息。输入开始时全是墙,用上下左右键移动,
用Del键删除墙,形成通路,用Enter键添加墙。输入结束时可以
将迷宫保存下来,以dd为扩展名。输入完毕时用F9键来得到结果,
找到路径时,屏幕下方会出现Path found,否则出现Path not found。
程序经Turbo C 2.0编译调试成功。运行时不用添加任何运行库。
不可以在VC上编译。

下载DOS版和windows版的迷宫游戏全部代码
     
----------------------------------------------------------------------------------
/*
 MazePath Demo BY Turbo C 2.0

 Copyright(c) RoverUnion. All right reserved.

 Filename: Maze.c

 Author Dongchengyu.

 Ver 1.10
*/

#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <conio.h>
#include <dos.h>

#define OK 1
#define ERROR 0
#define TRUE 1
#define FALSE 0

#define F9    0x43
#define Esc   0x1b
#define Del   0x53
#define Home  0x47
#define End   0x4f
#define Space 0x20
#define Up    0x48
#define Down  0x50
#define Left  0x4b
#define Right 0x4d
#define Enter 0x0d
#define F2    0x3c
#define F3    0x3d

#define STACK_INIT_SIZE 200
#define STACKINCREMENT 10

typedef int Boolean;
typedef int Status;

typedef struct {
   int x;
   int y;
} PosType;

typedef struct {
   int ord;
   PosType seat;
   int di;
} SElemType;

typedef struct {
   int td;
   int foot;
   int mark;
} MazeType;

typedef struct {
   SElemType *base;
   SElemType *top;
   int stacksize;
} Stack;

int Maze[20][30];
MazeType maze[20][30];
PosType StartPlace;
PosType EndPlace;
int count;
int m,n;
Boolean b_start=FALSE,b_end=FALSE;

void CreatMaze(void);
Status SaveMaze(char *filename);
Status LoadMaze(char *filename);
void Error(char *message);

Status InitStack(Stack *s);
Status DestroyStack(Stack *s);
Status ClearStack(Stack *s);
Boolean StackEmpty(Stack *s);
int StackLength(Stack *s);
Status Push(Stack *s,SElemType e);
SElemType Pop(Stack *s,SElemType e);
Status GetTop(Stack *s,SElemType *e);
Status StackTraverse(Stack *s,Status (* visit)(SElemType *se));
Boolean Pass(PosType curpos);
void MarkPrint(PosType seat);
void FootPrint(PosType curpos);
PosType NextPos(PosType seat,int di);
Status MazePath(PosType start,PosType end);

void CreatMaze(void)
/* Form the maze. */
{
 void Error(char *message);
 Status SaveMaze(char *filename);
 Status LoadMaze(char *filename);
 int i,j;
 int x,y;
 char c;
 char savename[12],loadname[12];
 Boolean flag=FALSE,load=FALSE;
 clrscr();
 printf("Menu:\n\n");
 printf("1.Load Mazefile:(*.dd)\n\n");
 printf("2.Input Maze:\n\n");
 printf("Input your choice: ");
 do
 {
  c=getch();
  switch(c)
  {
 case ''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''': putch(''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''); break;
 case ''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''': putch(''''''''''''''''''''''''''''''''2''''''''''''''''''''''''''''''''); break;
 case Esc: sleep(1); exit(1);
 default: break;
  }
 }
 while(c!=''''''''''''''''''''''''''''''''1''''''''''''''''''''''''''''''''&&c!=''''''''''''''''''''''''''''''''2'''''''''''''''''''''''''''''''') ;
 if(c==''''''''''''''''''''''''''''''''1'''''''''''''''''''''''''''''''')
 {
  printf("\n\nLoadName: ");
  scanf("%s",loadname);
  if(LoadMaze(loadname))
  {
 sleep(1); load=TRUE;
  }
 else { gotoxy(1,9); printf("Load fail!       "); }
 }
 if(!load)
 {
  printf("\nInput the maze''''''''''''''''''''''''''''''''s size:\n");
  printf("\nInput Length :\n");
  scanf("%d",&m);
  printf("\nInput Width :\n");
  scanf("%d",&n);
  if(m<4||n<4) Error("Input");
  if(m>30||n>20) Error("Maze too large");
  for(i=0;i<30;i++)
 for(j=0;j<20;j++)
  Maze[j][i]=2;
  StartPlace.x=0;
  StartPlace.y=0;
  EndPlace.x=0;
  EndPlace.y=0;
  clrscr();
  printf("\n");
  for(i=1;i<=n;i++)
  {
 for(j=1;j<=m;j++)
 {
  printf(" #");
  Maze[i-1][j-1]=0;
 }
 printf("\n");
  }
 }
 gotoxy(65,5);
 printf("''''''''''''''''''''''''''''''''#'''''''''''''''''''''''''''''''':Wall");
 gotoxy(65,7);
 printf("Start:Home");
 gotoxy(65,9);
 printf("End:End");
 gotoxy(65,11);
 printf("Delete Wall:Del");
 gotoxy(65,13);
 printf("Enter Wall:Enter");
 gotoxy(65,15);
 printf("Save Maze:F2");
 gotoxy(65,17);
 printf("Complete:F9");
 gotoxy(65,19);
 printf("Exit:Esc");
 gotoxy(4,3);
 x=4;y=3;
 do
 {
  c=getch();
  switch(c)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -