在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力。

推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图。

/***********************************************文件名称:main.c文件描述:C语言写一个简单的小游戏 编译环境:DEV C++ 初写时间:2018年8月3日 修改时间:2018年8月3日
***********************************************/
#include<stdio.h>
#include<conio.h>
#include<windows.h>int map[9][11]={{0,1,1,1,1,1,1,1,1,1,0},{0,1,0,0,0,1,0,0,0,1,0},{0,1,0,3,3,3,3,3,0,1,0},{0,1,0,3,0,3,0,3,0,1,1},{0,1,0,0,0,2,0,0,3,0,1},{1,1,0,1,1,1,1,0,3,0,1},{1,0,4,4,4,4,4,1,0,0,1},{1,0,4,4,4,4,4,0,0,1,1},{1,1,1,1,1,1,1,1,1,1,0}};//原始的图表,五行六列,其中 0 代表着空白的地方; 1 代表着墙;2 代表着人;//3 代表着箱子;4 代表着箱子的中点位置。 //图的变化要靠自己来编写数组,通过数字来进行图的构造。
int drawmain();
int tuidong();
int winshu();int main()//主函数
{while(1){system("cls");//对其进行清屏 drawmain();tuidong();}printf("shuchu \n");return 0;}
//把图形刻画出来int drawmain()
{   int i,j;winshu();//调用输赢的函数 for(i=0;i<9;i++){for(j=0;j<11;j++){switch(map[i][j]){case 0:printf("  "); //空白的地方break;case 1:printf("■"); //墙 break;case 2:printf("♀"); //人 break;case 3:printf("☆"); //箱子 break;case 4:printf("◎"); //终点地方 break; case 6:printf("♂");//人加终点位置 break;case 7: printf("★") ;//箱子加终点位置break;}}printf("\n");}
} //进行小人的移动,整个移动的过程就是数组变化的过程
int tuidong()
{int count,caw;//行和列 for(int i=0;i<9;i++)//确定人的位置 {for (int j=0;j<11;j++){if(map[i][j]==2||map[i][j]==6){count=i;caw=j;}}} int tui=getch();//与getchar()有区别的是:getchar()输入一个字符后需要回车来进行下一个字符的输入,//比较麻烦 ,getch()则不需要回车就能连续输入多个字符。 switch(tui){//上case 'W':case 72:// 1.人的前面是空地;// 2.人的前面是终点位置;// 3.人的前面是箱子//3.1.箱子的前面是空地;//3.2.箱子的前面是终点位置。if(map[count-1][caw]==0||map[count-1][caw]==4){map[count][caw]-=2;map[count-1][caw]+=2;} else if(map[count-1][caw]==3||map[count-1][caw]==7){if(map[count-2][caw]==0||map[count-2][caw]==4){map[count][caw]-=2;map[count-1][caw]-=1;map[count-2][caw]+=3;}}break;/* 移动的情况:位置:人   map[count][caw]人的前面是空地   map[count-1][caw]人的前面是终点位置   map[count-1][caw]箱子的前面是空地或终点位置  map[count-2][caw]*/ //下 case 'S':case 80://键值 if(map[count+1][caw]==0||map[count+1][caw]==4){map[count][caw]-=2;map[count+1][caw]+=2;}else if(map[count+2][caw]==0||map[count+2][caw]==4){if(map[count+1][caw]==3||map[count+1][caw]==7){map[count][caw]-=2;map[count+1][caw]-=1;map[count+2][caw]+=3;}}break;
//左 case 'A':case 75:if(map[count][caw-1]==0||map[count][caw-1]==4){map[count][caw]-=2;map[count][caw-1]+=2;}else if(map[count][caw-2]==0||map[count][caw-2]==4){if(map[count][caw-1]==3||map[count][caw-1]==7){map[count][caw]-=2;map[count][caw-1]-=1;map[count][caw-2]+=3;}}break;
//右 case 'D':case 77:if(map[count][caw+1]==0||map[count][caw+1]==4){map[count][caw]-=2;map[count][caw+1]+=2;}else if(map[count][caw+2]==0||map[count][caw+2]==4){if(map[count][caw+1]==3||map[count][caw+1]==7){map[count][caw]-=2;map[count][caw+1]-=1;map[count][caw+2]+=3;}}break;} /*进行小人的上下左右的移动移动的情况:1.人的前面是空地;2.人的前面是终点位置;3.人的前面是箱子3.1.箱子的前面是空地;3.2.箱子的前面是终点位置。不移动的情况:1.人的前面是墙;2.人的前面是箱子;2.1.箱子的前面是墙 ; 2.2.箱子的前面是箱子;*///分析后,要进行确定人的位置以及胜利的条件。 } //整个游戏的输赢
int winshu()
{int k=0;for(int i=0;i<9;i++){for (int j=0;j<11;j++){if(map[i][j]==3)k++;}}if(k==0)printf("恭喜你,你赢了!\n");
}/*总结:整个过程就是数组元素的变换过程,但是我还不会进行两关之间的转换,在以后我会注重逻辑思维的培养以及编写代码时思路简单的撰写,这是我写的第一个小游戏,写完之后感觉很高兴,因为自己学的知识有很大的用处。 */ 

运行图为:

由于学的比较浅,因此好多功能都没实现,例如:两关之间相连接进行连续游戏、不会使用图形界面等等,需要我以后再努力学习关于C语言的更深入的知识。

c语言写一个简单的小游戏-推箱子相关推荐

  1. 一个简单的c 游戏编程语言,编程达人 c语言写一个简单的小游戏-推箱子

    在学习C语言之后,写了一个简单的小游戏来锻炼自己的代码以及C语言知识的掌握能力. 推箱子作为手机上最常见的简单游戏,其代码也相对简单,想法也比较简单,下面为其代码和运行图. /************ ...

  2. 用C语言写一个简单的小游戏——猜数字

    我们该如何设计这个程序? 1.首先应该打印一个菜单,让玩家选择玩游戏或者退出游戏 2.当玩家选择玩游戏,我们让电脑生成一个1~100的随机数,让玩家去猜 3.如果玩家猜的数比电脑生成的数大,我们提示猜 ...

  3. 【牛客刷题】上手用C语言写一个三子棋小游戏超详解哦(电脑优化)

    作者:[南航科院小张 南航科院小张的博客 专栏:从c语言的入门到进阶 学习知识不只是要懂,还要会用:想要找到好的工作,这里给大家介绍一件可以斩获诸多大厂offer的利器–牛客网 点击免费注册和我一起开 ...

  4. vs2010c语言小游戏,用C语言写一个三子棋小游戏(用VS2010实现,加强版)

    前几天写了一个三子棋小游戏,但是比较简单,因为以前写的游戏棋盘只能是3x3那么大.今天对那个程序做了两点改进: 1.现在可以实现在任意大小的棋盘上下棋了. 2.因为棋盘可能变大,为了玩家方便确定坐标, ...

  5. 用接口,写一个简单的小游戏

    role接口:角色攻击跟修炼 public interface Role {int attack();//表示攻击,返回值表示对敌人的伤害void practise();// 表示练习.练习之后对敌人 ...

  6. unity编写一个简单的小游戏

    unity编写一个简单的小游戏 简易fly bird的制作 关于flybird 场景的搭建和素材的导入 使用素材搭建game和scene 制作柱体 bird的script column的sprite ...

  7. c语言设置一个选择数字的程序,C语言编一个数字益智小游戏

    程序功能及运行情况 设计的程序是一个数字益智游戏,旨在培养小朋友玩家的数学思维,提高玩家的数学能力.游戏共设有四个不同的小游戏,分别是一位数四则运算.两位数四则运算.找最值游戏.排序游戏.程序能实现产 ...

  8. 你写一个web网页小游戏

    写一个 web 网页小游戏需要以下几个步骤: 选择一种编程语言,常用的有 HTML.CSS.JavaScript 和 Python. 使用编辑器创建一个 HTML 文件,这个文件将是你的网页的基础. ...

  9. 用c++帮我写一个闯关小游戏

    很高兴为您写一个闯关小游戏!这个游戏将分为3个关卡,每个关卡都有不同的挑战.第一关的挑战是收集3个物品,这些物品分别在不同的位置,你必须找到它们才能过关.第二关的挑战是找到一个宝藏,你必须通过解决难题 ...

最新文章

  1. Tianchi发布最新AI知识树!
  2. jQuery练习---- 超简单的表格悬停变色Demo
  3. OpenCV 高斯滤波
  4. Python 图片转简单字符画
  5. kotlin 编译时常量_Kotlin程序| 编译时常量示例
  6. JS-面向对象-函数的使用场景---作为其他变量的值 / 作为对象的属性值 / 作为其他函数的参数 / 作为其他函数的返回值 / 作为构造函数(定义对象)
  7. 点击按钮抓不到页面的参数
  8. Python 优雅获取本机 IP 方法【转】
  9. 进阶之路:Java 日志框架全画传(上)
  10. winxp找不到服务器或 dns 错误,详解网络无法使用DNS错误的修复步骤
  11. Sumatra PDF软件基本使用和快捷键
  12. 5G 技术特性、频段、架构、部署极5G 手机
  13. ubuntu创建批处理文件
  14. 2022年废纸价格预测
  15. fastjson中出现(syntax error, expect {, actual string, pos 0)错误原因分析
  16. 【历史上的今天】4 月 22 日:Mosaic 浏览器发布;第一个商业软件的开发者出生;计算机先驱诞生日
  17. 什么样的触达方式,会员会喜欢?
  18. Android自己定义TabActivity(实现仿新浪微博底部菜单更新UI)
  19. 沪穗深百万地铁族担心:花生WiFi到底安全吗?
  20. docker安装mysql yml文件_Docker 安装mysql

热门文章

  1. 梯度下降算法和正规方程组学习笔记
  2. JS中call用法理解
  3. TensorFlow学习日记之tflearn
  4. 开发数据可视化,有哪些数据可视化表现形式?
  5. 总结一下使用Emgucv的经验和经历
  6. 甘肃地形图之陇右地形分析、DEM数据下载
  7. 维修服务器bga是什么,服务器主板芯片坏了有机器能拆除焊接BGA吗?
  8. 数据分析——R语言中ggplot2用法(1)
  9. 个性化智能推荐技术研究总结
  10. Redhat 7 安装 iftop软件