c语言实现可自定义的游戏地图
作者:Wccyy883 发布时间:2021-10-25 14:38:34
标签:c语言,游戏地图
本文实例为大家分享了c语言实现可自定义的游戏地图的具体代码,供大家参考,具体内容如下
博主相信每个人都有想做游戏的冲动,那么本文将给出一个用c语言制作的可自定义大小的游戏地图(包含player,撞墙设置)。废话不多说,直接给出全代码!
1.完整代码
#include<stdio.h>
#include<windows.h>
#include<conio.h>
//this is the add function
int drawroom(int length,int height,int x,int y);
int transform(int tran);
//begin the function
int main()
{
int p=10;
int q=10;
printf("control player to move:up“8” down“2” left“4” right“6”\n");//control the player
int y,x;
int ret=1;
int a,b;
printf("请输入地图的大小,例如:10 10:\n");
scanf("%d %d",&p,&q);
printf("请输入玩家的位置:“例如:3 5”\n"); //get the first player place
scanf("%d %d",&y,&x);
drawroom(p,q,y,x);
printf("\n");
while(ret!=0){
printf("\n");
int i;
i=0;
int tran;
tran=getch();
i=transform(tran);
if(i==8){
drawroom(p,q,y-1,x);
y=y-1;
}
else if(i==2){
drawroom(p,q,y+1,x);
y=y+1;
}
else if(i==4){
drawroom(p,q,y,x-1);
x=x-1;
}
else if(i==6){
drawroom(p,q,y,x+1);
x=x+1;
}
if(y==0 || x==0){
ret=0;
printf("\n\nyou touch the board!game over!!");
break;
}
if(y==p+1 || x==q+1){
ret=0;
printf("\n\nyou touch the board!game over!!");
break;
}
}
getchar();
system("pause");
return 0;
}
int drawroom(int length,int height,int y,int x)
{ int ret=1;
int size1=height+2;
int size2=length+2;
int a[size1][size2];
int i,j;
int count=1;
for(i=0;i<size1;i++){
for(j=0;j<size2;j++){
a[i][j]=0;
}
}
a[0][0]=1;
a[0][size2-1]=1;
a[size1-1][0]=1;
a[size1-1][size2-1]=1;
for(j=1;j<size2-1;j++){
a[0][j]=2;
}
for(j=1;j<size2-1;j++){
a[size1-1][j]=2;
}
for(i=1;i<size1-1;i++){
a[i][0]=3;
}
for(i=1;i<size1-1;i++){
a[i][size2-1]=3;
}
a[y][x]=4;
for(i=0;i<size1;i++){
printf("\n");
for(j=0;j<size2;j++){
if(a[i][j]==1){
printf("+ ");
}else if(a[i][j]==2){
printf("- ");
}else if(a[i][j]==3){
printf("| ");
}else if(a[i][j]==4){
printf("@ ");
}else{
printf(". ");
}
}
}
printf("\n\n\n\n\n\n\n\n\n\n");
return 0;
}
int transform(int tran)
{
int tot;
if(tran==52)tot=4;
if(tran==54)tot=6;
if(tran==50)tot=2;
if(tran==56)tot=8;
return tot;
}
注:游戏说明:先自定义游戏地图的大小,然后自定义玩家生成在游戏棋盘中的哪个位置,最后通过数字键盘控制玩家的移动:下:2 上:8 左:4 右:6
2.运行成果
大家可以自己在游戏地图的基础上设置不同的玩家,甚至可以进行双人对战!
来源:https://blog.csdn.net/weixin_64524066/article/details/122386274


猜你喜欢
- 本文实例讲述了Java基于正则实现的日期校验功能。分享给大家供大家参考,具体如下:private void checkDate() thro
- 目录引言配置yml文件创建数据源配置类为每个数据库创建配置类引言今天为大家带来一些非常有用的实战技巧,比如在我们需要对两个数据库进行操作的时
- 语法糖指计算机语言中添加的某种语法,这种语法对语言的功能并没有影响,但是更方便程序员使用。通常来说使用语法糖能够增加程序的可读性,从而减少程
- 本文实例讲述了C#设计模式之Facade外观模式解决天河城购物问题。分享给大家供大家参考,具体如下:一、理论定义外观模式 &nbs
- 前言本文主要是将最近工作中遇到的一个问题进行总结分享,主要介绍的是如何让WebView中H5页面全屏播放视频。关于这个问题,做一下简单分析,
- 最近在写我们大三项目的一个视频文件上传的页面,实现后台对上传的进度进行监听,然后将监听的信息返回给前台页面。前台的页面效果图:前台进度条控件
- 前言这个题目可能取得不大好,想了很久没想出更合适的了。在android开发webview的时候,有的时候后台不一定给的就是一个url,而是把
- 代理OkHttp 支持设置代理,使用OkHttpClient.proxy()即可设置。什么是代理?根据代理的对象不同,可分为正向代理和反向代
- 1.EazyEmail邮件发送类库Net 类库自带了邮件发送功能。笔者对该类库,从使用的角度进行了二次封装,nuget上可搜索EazyEma
- 目录1 简介2 Condition的实现分析等待队列等待(await):AbstractQueuedLongSynchronizer中实现C
- IDEA修改idea64.exe.vmoptions文件及解决coding卡顿用idea软件同时打开多个项目时,过个几天不关闭,就慢慢陷入卡
- 在谈 Volatile 之前,我们先回顾下 Java 内存模型 的三要素:原子性、可见性、有序性,也就是大家常提到的并发编程三要素。并发编程
- 前言众所周知,RxJava2 中当链式调用中抛出异常时,如果没有对应的 Consumer 去处理异常,则这个异常会被抛出到虚拟机中去,And
- web.xml中设置:<servlet> <servlet-name>DisplayChart</servle
- //param objArr the expanded object of Array. &
- 在面向对象的概念中,所有的对象都是通过类来描绘的,但是反过来,并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体
- 背景Arthas是阿里巴巴开源的应用诊断利器,提供了profiler命令,可以生成热点火焰图。通过采样录制调用链路来做性能分析,极大提升了线
- 作为开发人员,掌握开发环境下的调试技巧十分有必要。去年就想把关于Eclipse断点调试总结下了,由于对时间的掌控程度仍需极大提高,结果拖到今
- 前面介绍了Spring Boot 整合mybatis 使用注解的方式实现数据库操作,介绍了如何自动生成注解版的mapper 和pojo类。
- 二维数组遍历:思想:1.先将二维数组中所有的元素拿到2.再将二维数组中每个元素进行遍历,相当于就是在遍历一个一维数组第一种方法:双重for循