//坦克大战
//0、提示界面
//1、边框
//2、指定位置显示自己的坦克
//3、己方坦克随着方向键动起来
//getasynkeustae
//Sleep(毫秒)
//减少闪烁
//不闪烁SetConsoleCursorPosition
//4、指定位置显示敌方坦克
//5、敌方坦克自己动起来
//6、敌方坦克自动发子弹
//7、己方坦克,按空格键发子弹
//8、设置自己的BOSS
//9、设置障碍物
//10、死亡判断
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
#include<windows.h>
#include<string.h> #define BACK_WIDE 22
#define BACK_HIGHT 22 unsigned char g_arrBackGround[BACK_HIGHT][BACK_WIDE] = {
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , },
{, , , , , , , , , , , , , , , , , , , , , }
};
//己方坦克坐标
unsigned char g_OurPosX = ;
unsigned char g_OurPosY = ; unsigned char g_ourPosTempX = ;
unsigned char g_ourPosTempY = ; //显示提示界面
void StartIU();
//按任意键开始游戏
void StartGame();
//清空显示控制台
void ClearIU();
//显示边框
void ShowBackGround();
//己方坦克动起来
void TanKeRun();
//将新的坦克的位置更新到背景中
void TanKePosUpdateBack();
//记录坦克的坐标
void RemberTanKePos();
//清空坦克旧坐标
void ClearTanKeOldPos();
int main( )
{
//显示提示界面
StartIU();
StartGame();
ClearIU();
ShowBackGround();
while ()
{
TanKeRun();
//TanKePosUpdateBack();
ClearIU();
ShowBackGround();
}
system("pause");
return ;
}
void StartIU()
{
printf("\n\n\n\t\t\t《欢迎来到坦克大战》\n");
printf("\t\t\t《W S A D 控制坦克行进》\n");
printf("\t\t\t《空格发送子弹》\n");
printf("\t\t\t《按任意键开始游戏》\n");
}
void StartGame()
{
_getch();//不阻塞读取 }
void ClearIU()
{
system("cls");
}
//己方坦克按键动起来
void TanKeRun()
{
char cKetDis = _getch();
if ('w' == cKetDis || 'W' == cKetDis)//上
{
g_OurPosY--;
}
if ('s' == cKetDis || 'S' == cKetDis)//下
{
g_OurPosY++;
}
if ('A' == cKetDis || 'a' == cKetDis)//左
{
g_OurPosX--;
}
if ('d' == cKetDis || 'D' == cKetDis)//右
{
g_OurPosX++;
}
if (g_ourPosTempX != g_OurPosX || g_ourPosTempY != g_OurPosY)
{
TanKePosUpdateBack();
} }
//将新的坦克更新到背景中
void TanKePosUpdateBack()
{
g_arrBackGround[g_OurPosY][g_OurPosX] = ;
ClearTanKeOldPos();
RemberTanKePos(); }
//记录坦克的坐标
void RemberTanKePos()
{
g_ourPosTempX = g_OurPosX;
g_ourPosTempY = g_OurPosY;
}
//清空坦克旧坐标
void ClearTanKeOldPos()
{
g_arrBackGround[g_ourPosTempY][g_ourPosTempX] = ;
}
void ShowBackGround()
{
int i, j;
unsigned char strAllBack[] = { };
for (i = ; i <BACK_HIGHT; i++)
{
for (j = ; j < BACK_WIDE; j++)
{
switch (g_arrBackGround[i][j])
{
case ://空格
/*printf(" ");*/
strcat(strAllBack," ");
break;
case ://边框
/*printf("#");*/
strcat(strAllBack, "#");
break;
case ://己方坦克
/*printf("土");*/
strcat(strAllBack, "F");
break;
}
}
strcat(strAllBack, "\n");
}
printf("%s",strAllBack);
}

C 语言设计坦克大战(未完成)的更多相关文章

  1. Java课程设计——坦克大战

    坦克大战——坦克类 一. 团队课程设计博客链接 https://www.cnblogs.com/chenhuilin/p/10275664.html 二.个人负责模块和任务说明 模块:坦克类(玩家坦克 ...

  2. java课程设计-坦克大战

    团队课程设计博客链接 个人负责模块 枚举类.工具类.子弹类.图片素材的查找,地图制作 Git管理 包名类名的命名 详细说明 枚举类 如 单人和双人模式 工具类 将每个图片的路径使用字符串保存,便于调用 ...

  3. 坦克大战-C语言-详注版

    代码地址如下:http://www.demodashi.com/demo/14259.html 坦克大战-C语言-详注版 概述 本文详述了C语言版坦克大战游戏的原理以及实现方法,对游戏代码进行了详细的 ...

  4. JAVA课程设计(坦克大战)

    2019-01-16 坦克大战游戏背景: 1. 需求分析 1.1环境要求 操作系统:Windows 7(SP1)以上 JAVA虚拟机:JDK1.8以上 开发环境:Eclipse(4.5以上) 1.2角 ...

  5. 【blade04】用面向对象的方法写javascript坦克大战

    前言 javascript与程序的语言比如C#或者java不一样,他并没有“类”的概念,虽然最新的ECMAScript提出了Class的概念,我们却没有怎么用 就单以C#与Java来说,要到真正理解面 ...

  6. [置顶] 小强的HTML5移动开发之路(9)——坦克大战游戏3

    上一篇我们创建了敌人的坦克和自己的坦克,接下来就应该让坦克发子弹了,我们下面来看一下如何让我们的坦克发出子弹. 前面我们用面向对象的思想对Tank进行了封装,又利用对象冒充实现了我们的坦克和敌人的坦克 ...

  7. javascript 面向对象制作坦克大战 (一)

    PS:这个坦克大战是在网上下的一段源码之后,自己进行的重写.   写这个的目的是为了巩固自己这段时间对js的学习.整理到博客上,算是对自己近端时间学习js的一个整理. 同时也希望可以帮助到学习js的园 ...

  8. java制作简单的坦克大战

    坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...

  9. 【Cocos2D-x 3.5实战】坦克大战(1)环境配置

    前言: 最近课比较少,空闲时间比较多,一有时间就东想西想,想着想着就突然想到做手机游戏(android)了,学习下CoCos2d.看了一些CoCos2D的相关文档和教程,觉得是时候实战了,但是苦于没有 ...

随机推荐

  1. SmartSql使用教程(2)——使用动态代理实现CURD

    一.引言 接着上一篇的教程,本章我们继续讲SmartSql.今天的主题是动态仓储. 老规矩,先上一个项目结构 从第二章开始.我们将原来的单一项目做了一个分离.方便之后的更新. 在这个结构中.原本上一章 ...

  2. DIV垂直水平居中

    方法一:使用定位的方法 .parent { width: 300px; height: 200px; border: 1px solid red; position:relative; } .chil ...

  3. POJ2549【hash分离链接法】

    题意: 给n个不同的数,求一个4个数(a,b,c,d)的组合满足a+b+c=d;求最大的d. 思路: 没想到可以用hash搞/ 这个就是数据结构里的分离链接法~ 解决hash冲突的方法:将所有关键字为 ...

  4. 云服务器、虚拟主机和VPS的区别

    虚拟主机就是利用网络空间技术,把一台服务器分成许多的"虚拟"的主机,每一台网络空间都具有独立的域名和IP地址,具有完整的Internet服务器功能.网络空间之间完全独立,在外界看来 ...

  5. 解决resignFirstResponder或者endEditing无效的办法

    当你想要收回弹出的键盘时却发现平时用的resignFirstResponder和endEditing都失去作用时,应该考虑一下当前的TextField是否为第一响应者,如果不是第一响应者的话,自然下面 ...

  6. 支持通配符查询的k-gram索引

    k-gram索引的通配符查询处理技术称为k-gram索引. 一个k-gram代表由k个字符组成的序列.对于词项castle来说,cas.ast.stl都是3-gram.我们用特殊的字符$来标识词项的开 ...

  7. 7.Python初窥门径(数据类型补充,操作及注意事项)

    python(数据类型补充,转换及注意事项) 数据类型补充 str str.capitalize() 首字母大写 str.title() 每个单词首字母大写 str.count() 统计元素在str中 ...

  8. discuz 3.x ssrf分析

    discuz 3.x版本ssrf漏洞分析 漏洞促发点\souce\module\forum\forum_ajax.php 最后看到了这里 ***$_GET['action']='downremotei ...

  9. php:比较两个txt文件,格式如下,分别取出a.txt有的b.txt没有的,b.txt有的a.txt没有的及两个都有的

    <?php /*比较两个txt文件,格式如下,分别取出a.txt有的b.txt没有的,b.txt有的a.txt没有的及两个都有的 * a.txt: * A * B * C * D * b.txt ...

  10. php操作redis和memcache过期时间

    php-redis 设置过期时间setTimeOut 命令行expireredis过期时间redis术语里面,把设置了expire time的key 叫做:volatile keys. 意思就是不稳定 ...