//坦克大战
//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. 图解SynchronousQueue原理详解-非公平模式

    SynchronousQueue原理详解-非公平模式 开篇 说明:本文分析采用的是jdk1.8 约定:下面内容中Ref-xxx代表的是引用地址,引用对应的节点 前面已经讲解了公平模式的内容,今天来讲解 ...

  2. MySQL学习中,遇到的问题记录

    一.安装mysql时,报错:1045 原因:因为之前安装过mysql,之后再安装会出现这个问题. 解决: 删除之前的残留就好了 方法:清除mysql之前的历史残留

  3. ffmpeg h264转h265

    ffmpeg -i d:\soft\720p.mp4 -c:v libx265 -b:v 5000k d:\soft\myvideo.mp4 这里码率是5000k,编码是h265 h265的解码貌似用 ...

  4. 洛谷P2950 [USACO09OPEN]牛绣Bovine Embroidery

    P2950 [USACO09OPEN]牛绣Bovine Embroidery 题目描述 Bessie has taken up the detailed art of bovine embroider ...

  5. 《机器学习实战》-k近邻算法

    目录 K-近邻算法 k-近邻算法概述 解析和导入数据 使用 Python 导入数据 实施 kNN 分类算法 测试分类器 使用 k-近邻算法改进约会网站的配对效果 收集数据 准备数据:使用 Python ...

  6. D-温暖的签到题

    链接:https://ac.nowcoder.com/acm/contest/892/D 题意: 给你一个长度为n的序列,初始为1,2,3...n,对其进行m次操作. 操作有两种: 1 l r  表示 ...

  7. 前端JavaScript(1) --Javascript简介,第一个JavaScript代码,数据类型,运算符,数据类型转换,流程控制,百度换肤,显示隐藏

    一.Javascript简介 Web前端有三层: HTML:从语义的角度,描述页面结构 CSS:从审美的角度,描述样式(美化页面) JavaScript:从交互的角度,描述行为(提升用户体验) Jav ...

  8. 不同ORM新的理解

    对于ORM你怎么理解?你用过的ORM有什么区别?这是面试的时候基本上会问的问题. 问题很简单,本文不在阐述.本文主要讨论Dapper 和 EF Core First的区别. 从直观上来看两个都是ORM ...

  9. [转]兼容各个浏览器的H.264播放: H.264+HTML5+FLOWPLAYER+WOWZA+RMTP

    一.方案确定 计划做视频播放,要求能够播放H264编码的mp4文件,各个浏览器,各种终端都能播放. 首先查找可行性方案, http://www.cnblogs.com/sink_cup/archive ...

  10. IOC的使用

    1.概要: 在spring中,都是使用反射机制创建对象,将创建对象的权利交给spring容器,就是控制反转(ioc) 对象创建方式 有参构造 无参构造 工厂模式(静态,非静态) 2.创建IDEA控制台 ...