首页 > 其他分享 >走迷宫小游戏

走迷宫小游戏

时间:2024-08-24 17:55:35浏览次数:8  
标签:hOut int 迷宫 coord 小游戏 cci include define

#include <stdio.h>
#include <conio.h>
#include <windows.h>
#include <time.h>
#define Height 45
#define Width 45
#define Wall 1
#define Road 0
#define Start 2
#define End 3
#define Esc 5
#define Up 1
#define Down 2
#define Left 3
#define Right 4
int map[Height+2][Width+2];
void gotoxy(int x,int y){
	COORD coord;
	coord.X=x;
	coord.Y=y;
	SetConsoleCursorPosition( GetStdHandle( STD_OUTPUT_HANDLE ), coord );
}
void hidden(){
	HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
	CONSOLE_CURSOR_INFO cci;
	GetConsoleCursorInfo(hOut,&cci);
	cci.bVisible=0;
	SetConsoleCursorInfo(hOut,&cci);
}
void create(int x,int y){
	int c[4][2]={0,1,1,0,0,-1,-1,0};
	int i,j,t;
	for (i=0;i<4;i++) {
		j=rand()%4;
		t=c[i][0];
		c[i][0]=c[j][0];
		c[j][0]=t;
		t=c[i][1];
		c[i][1]=c[j][1];
		c[j][1]=t;
	}
	map[x][y]=Road;
	for (i=0;i<4;i++)
	if(map[x+2*c[i][0]][y+2*c[i][1]]==Wall) {
		map[x+c[i][0]][y+c[i][1]]=Road;
		create(x+2*c[i][0],y+2*c[i][1]);
	}
}
int get_key(){
	char c;
	while(c=getch()) {
		if(c==27) return Esc;
		if(c!=-32)continue;
		c=getch();
		if(c==72) return Up;
		if(c==80) return Down;
		if(c==75) return Left;
		if(c==77) return Right;
	}
	return 0;
}
void paint(int x,int y){
	gotoxy(2*y-2,x-1);
	switch(map[x][y]) {
		case Start:
		printf("入");
		break;
		case End:
		printf("出");
		break;
		case Wall:
		printf("▇");
		break;
		case Road:
		printf(" ");
		break;
	}
}
void game() {
	int x=2,y=1;
	int c;
	while(1) {
		gotoxy(2*y-2,x-1);
		printf("A");
		if(map[x][y]==End)
		{
			gotoxy(30,24);
			printf("\n");
			printf("到达终点,按任意键结束");
			getch();
			break;
		}
		c=get_key();
		if(c==Esc) {
			gotoxy(0,24);
			break;
		}
		switch(c) {
			case Up:
			if(map[x-1][y]!=Wall) {
				paint(x,y);
				x--;
			}
			break;
			case Down:
			if(map[x+1][y]!=Wall) {
				paint(x,y);
				x++;
			}
			break;
			case Left:
			if(map[x][y-1]!=Wall) {
				paint(x,y);
				y--;
			}
			break;
			case Right:
			if(map[x][y+1]!=Wall) {
				paint(x,y);
				y++;
			}
			break;
		}
	}
}
int main() {
	int i,j;
	srand((unsigned)time(NULL));
	hidden();
	for (i=0;i<=Height+1;i++)
	for (j=0;j<=Width+1;j++)
	if(i==0||i==Height+1||j==0||j==Width+1)
	map[i][j]=Road; else map[i][j]=Wall;
	create(2*(rand()%(Height/2)+1),2*(rand()%(Width/2)+1));
	for (i=0;i<=Height+1;i++){
		map[i][0]=Wall;
		map[i][Width+1]=Wall;
	}
	for (j=0;j<=Width+1;j++){
		map[0][j]=Wall;
		map[Height+1][j]=Wall;
	}
	map[2][1]=Start;
	map[Height-1][Width]=End;
	for (i=1;i<=Height;i++)
	for (j=1;j<=Width;j++)
	paint(i,j);
	game();
	getch();
	return 0;
}

标签:hOut,int,迷宫,coord,小游戏,cci,include,define
From: https://blog.csdn.net/cleversuperlucky/article/details/141438482

相关文章

  • 洛谷P1605 迷宫
    原题题目描述给定一个方格的迷宫,迷宫里有处障碍,障碍处不可通过。在迷宫中移动有上下左右四种方式,每次只能移动一个方格。数据保证起点上没有障碍。给定起点坐标和终点坐标,每个方格最多经过一次,问有多少种从起点坐标到终点坐标的方案。输入格式第一行为三个正整数,分......
  • 汇编语言之门:深入I/O操作的迷宫
    标题:汇编语言之门:深入I/O操作的迷宫在计算机的微观世界中,汇编语言以其与硬件的紧密联系而著称。输入输出(I/O)操作是汇编语言程序中与外部世界交互的重要手段。本文将带你深入探索汇编语言中的I/O操作,揭示其背后的原理,并展示如何通过代码实现基本的I/O功能。汇编语言与I/O操......
  • 汇编语言之门:深入I/O操作的迷宫
    标题:汇编语言之门:深入I/O操作的迷宫在计算机的微观世界中,汇编语言以其与硬件的紧密联系而著称。输入输出(I/O)操作是汇编语言程序中与外部世界交互的重要手段。本文将带你深入探索汇编语言中的I/O操作,揭示其背后的原理,并展示如何通过代码实现基本的I/O功能。汇编语言与I/O操......
  • 打砖块小游戏html小游戏
    这里提供一个打砖块小游戏html代码,有需要的小伙伴可以自己试试。body内容点击查看代码<selectid="difficulty"><optionvalue="easy">简单</option><optionvalue="medium">中等</option><optionvalue="hard">困难&l......
  • 华为云服务器搭建小游戏
    在当今数字化的时代,搭建自己的小游戏服务器成为了许多开发者和爱好者的热门选择。华为云服务器凭借其强大的性能、稳定的服务和丰富的功能,为我们提供了一个理想的平台。接下来,让我们一起探索如何在华为云服务器上搭建小游戏。一、准备工作注册华为云账号并完成实名认证。开......
  • HTML实现2048小游戏
    游戏概述 实现一个基本的2048游戏涉及综合运用HTML、CSS和JavaScript这三种关键技术。 HTML用于构建游戏的结构框架,包括游戏容器、网格布局以及可能的用户交互元素(如按钮或得分显示)。 CSS则负责美化游戏界面,通过样式表定义网格的样式、瓷砖的外观、动画效果以及整体布......
  • 一本通1215:迷宫答案
    #include<bits/stdc++.h>usingnamespacestd;charmp[105][105];boolvis[105][105];intdx[4]={0,0,1,-1};intdy[4]={-1,1,0,0};intfx,fy,sx,sy,n,c,a=0;voiddfs(intx,inty){  if(x==fx&&y==fy)  {    cout<<"YES"&l......
  • 深度搜索迷宫问题
    深度搜索(Depth-FirstSearch,DFS)是一种用于图的遍历的算法,也可以用来解决迷宫问题。迷宫问题是指在一个迷宫中,找到从起点到终点的路径。以下是深度搜索解决迷宫问题的步骤:创建一个二维数组来表示迷宫,其中0表示可以通过的路径,1表示墙壁或障碍物。同时创建一个与迷宫相同大小的......
  • pygame开发小游戏
    代码:#coding=utf-8importos,sys,re,timeimportpygameimportrandomfromwin32apiimportGetSystemMetricsfromtkinterimportmessageboxfromsqlparse.filtersimportright_margin#pyinstaller-F-wdaziyan.pypygame.init()pygame.display.set_caption(&......
  • 用JavaScript做超级玛丽小游戏
    一、前言前几天用JS实现扫雷和贪吃蛇(通过HTML的DOM节点实现基本界面,界面背景简单,交互简单)。比较复杂的是植物大战僵尸,不同的关卡设置单独的函数。所以还比较难。超级玛丽通过canvas实现背景,交互很复杂,功能很多,JS代码完全是有汇编语言反编译成C语言,然后把C语言转换成JS实现的......