C# 推箱子游戏&对战游戏
推箱子游戏提纲,只有向右向上的操作,向左向下同理,后期需完善。
namespace 推箱子
{
class Program
{
static void Main(string[] args)
{
//小人初始位置的索引
int x = ;
int y = ; int end1x = ;
int end1y = ; #region 画地图
string[,] map = new string[, ] {
{" "," ","■","■","■","■","■","■","■","■"},
{" "," ","■"," "," "," "," ","☆"," ","■"},
{"■","■","■"," "," "," "," "," "," ","■"},
{"■"," "," "," "," "," "," "," "," ","■"},
{"■"," "," "," "," "," "," "," "," ","■"},
{"■"," "," ","□"," "," "," "," "," ","■"},
{"■"," "," "," "," "," ","■","■","■","■"},
{"■"," "," "," "," "," ","■"," "," "," "},
{"■","♀"," "," "," "," ","■"," "," "," "},
{"■","■","■","■","■","■","■"," "," "," "},
};
#endregion while (true)
{
Console.Clear();//清空掉所有已经打印的内容
#region 打印地图
for (int i = ; i < ; i++)
{
for (int j = ; j < ; j++)
{
Console.Write(map[i, j]);
}
Console.WriteLine();
}
#endregion if (map[end1y, end1x] == "★")
{
Console.WriteLine("恭喜过关");
break;
} ConsoleKeyInfo key = Console.ReadKey();
//向上
if (key.Key.ToString() == "UpArrow")
{
//小人当前的位置与要去的下一步位置内容互换
if (map[y - , x] == "■")//如果小人的下一步是墙,什么都不干
{
}
else //小人的下一步不是墙
{
if (map[y - , x] == "□" && map[y - , x] != "■")
{
if (map[y - , x] == "☆")
{
//箱子的下一步是目标点,让箱子填满目标点
map[y - , x] = "★";
map[y - , x] = " ";
string temp = map[y, x];
map[y, x] = map[y - , x];
map[y - , x] = temp;
y--;//真正改变小人的位置
}
else if (map[y - , x] == " ")
{
//推着箱子走,箱子的下一步是空地才可以走
//先让箱子和箱子的下一步互换
string temp = map[y - , x];
map[y - , x] = map[y - , x];
map[y - , x] = temp;
temp = map[y, x];
map[y, x] = map[y - , x];
map[y - , x] = temp;
y--;//真正改变小人的位置
}
}
else if (map[y - , x] == " ")
{
//正常行走
string temp = map[y, x];
map[y, x] = map[y - , x];
map[y - , x] = temp;
y--;//真正改变小人的位置
}
}
}
//向下
else if (key.Key.ToString() == "DownArrow")
{
string temp = map[y, x];
map[y, x] = map[y + , x];
map[y + , x] = temp;
y++;//真正改变小人的位置
}
//向左
else if (key.Key.ToString() == "LeftArrow")
{
string temp = map[y, x];
map[y, x] = map[y, x - ];
map[y, x - ] = temp;
x--;//真正改变小人的位置
}
//向右
else if (key.Key.ToString() == "RightArrow")
{
//小人当前的位置与要去的下一步位置内容互换
if (map[y, x + ] == "■")//如果小人的下一步是墙,什么都不干
{
}
else //小人的下一步不是墙
{
if (map[y, x + ] == "□" && map[y, x + ] != "■")
{
//先让箱子和箱子的下一步互换
string temp = map[y, x + ];
map[y, x + ] = map[y, x + ];
map[y, x + ] = temp;
temp = map[y, x];
map[y, x] = map[y, x + ];
map[y, x + ] = temp;
x++;//真正改变小人的位置
}
else if (map[y, x + ] == " ")
{
//正常行走
string temp = map[y, x];
map[y, x] = map[y, x + ];
map[y, x + ] = temp;
x++;//真正改变小人的位置
}
}
}
} //是否胜利 Console.ReadKey();
Console.ReadKey();
}
}
}
对战游戏提纲,简单从操作:
namespace 对战游戏2._0
{
class Program
{
public struct ZhanShi
{
public string MingZi;
public int GongJi;
public int XueLiang;
} public struct JiNeng
{
public string MingCheng;
public double ShangHai;
} public struct WuQi
{
public string MingCheng;
public int GongJiLi;
} static void Main(string[] args)
{
Random ran = new Random(); #region 技能生成
ArrayList JiNengMen = new ArrayList();
JiNeng jn1 = new JiNeng();
jn1.MingCheng = "降龙十八掌";
jn1.ShangHai = ;
JiNeng jn2 = new JiNeng();
jn2.MingCheng = "佛山无影脚";
jn2.ShangHai = 1.5;
JiNeng jn3 = new JiNeng();
jn3.MingCheng = "如来神掌";
jn3.ShangHai = ;
JiNengMen.Add(jn1);
JiNengMen.Add(jn2);
JiNengMen.Add(jn3);
#endregion #region 生成武器库
WuQi wq1 = new WuQi();
wq1.MingCheng = "树枝";
wq1.GongJiLi = ;
WuQi wq2 = new WuQi();
wq2.MingCheng = "菜刀";
wq2.GongJiLi = ;
WuQi wq3 = new WuQi();
wq3.MingCheng = "圣剑";
wq3.GongJiLi = ;
#endregion #region 创建战士
ZhanShi zs1 = new ZhanShi();
Console.Write("请输入第一个战士的姓名:");
zs1.MingZi = Console.ReadLine();
zs1.GongJi = ran.Next(, );
zs1.XueLiang = ran.Next(, );
//100 10以下 圣剑 11~40 菜刀 41~90 树枝 91~100啥也没有
int HDWQ = ran.Next(, );
if (HDWQ <= )
{
Console.WriteLine(zs1.MingZi + "获得了武器:" + wq3.MingCheng);
zs1.GongJi += wq3.GongJiLi;
}
else if (HDWQ <= )
{
Console.WriteLine(zs1.MingZi + "获得了武器:" + wq2.MingCheng);
zs1.GongJi += wq2.GongJiLi;
}
else if (HDWQ <= )
{
Console.WriteLine(zs1.MingZi + "获得了武器:" + wq1.MingCheng);
zs1.GongJi += wq1.GongJiLi;
}
else
{
Console.WriteLine("嘿嘿嘿,啥也木有哇!");
}
Console.WriteLine("第一个战士:" + zs1.MingZi + ",攻击力:" + zs1.GongJi + ",血量:" + zs1.XueLiang); ZhanShi zs2 = new ZhanShi();
Console.Write("请输入第二个战士的姓名:");
zs2.MingZi = Console.ReadLine();
zs2.GongJi = ran.Next(, );
zs2.XueLiang = ran.Next(, ); HDWQ = ran.Next(, );
if (HDWQ <= )
{
Console.WriteLine(zs2.MingZi + "获得了武器:" + wq3.MingCheng);
zs2.GongJi += wq3.GongJiLi;
}
else if (HDWQ <= )
{
Console.WriteLine(zs2.MingZi + "获得了武器:" + wq2.MingCheng);
zs2.GongJi += wq2.GongJiLi;
}
else if (HDWQ <= )
{
Console.WriteLine(zs2.MingZi + "获得了武器:" + wq1.MingCheng);
zs2.GongJi += wq1.GongJiLi;
}
else
{
Console.WriteLine("嘿嘿嘿,啥也木有哇!");
} Console.WriteLine("第二个战士:" + zs2.MingZi + ",攻击力:" + zs2.GongJi + ",血量:" + zs2.XueLiang);
#endregion Console.WriteLine("请按任意键开始战斗!!!");
Console.ReadKey(); Console.ForegroundColor = ConsoleColor.White;
//对打
while (true)
{
int ShangHai = ; #region 第一个战士攻击
int SYJN = ran.Next(, );
if (SYJN <= )
{
JiNeng jn = (JiNeng)JiNengMen[ran.Next(, JiNengMen.Count)];
ShangHai = Convert.ToInt32(Program.PuTongGongJi(zs1.GongJi) * jn.ShangHai);
zs2.XueLiang = zs2.XueLiang - ShangHai; Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine(zs1.MingZi + " 对 " + zs2.MingZi + " 发动了☆☆☆" + jn.MingCheng + "☆☆☆,造成了" + ShangHai + "点伤害, " + zs2.MingZi + " 剩余" + zs2.XueLiang + "点血量!");
Console.WriteLine();
System.Threading.Thread.Sleep();
}
else
{
Console.ForegroundColor = ConsoleColor.White;
ShangHai = Program.PuTongGongJi(zs1.GongJi);
zs2.XueLiang = zs2.XueLiang - ShangHai;
Console.WriteLine(zs1.MingZi + " 对 " + zs2.MingZi + " 发动了普通攻击,造成了" + ShangHai + "点伤害, " + zs2.MingZi + " 剩余" + zs2.XueLiang + "点血量!");
Console.WriteLine();
System.Threading.Thread.Sleep();
}
#endregion #region 第二个战士攻击
SYJN = ran.Next(, );
if (SYJN <= )
{
JiNeng jn = (JiNeng)JiNengMen[ran.Next(, JiNengMen.Count)];
ShangHai = Convert.ToInt32(Program.PuTongGongJi(zs2.GongJi) * jn.ShangHai);
zs1.XueLiang = zs1.XueLiang - ShangHai; Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(zs2.MingZi + " 对 " + zs1.MingZi + " 发动了☆☆☆" + jn.MingCheng + "☆☆☆,造成了" + ShangHai + "点伤害, " + zs1.MingZi + " 剩余" + zs1.XueLiang + "点血量!");
Console.WriteLine();
System.Threading.Thread.Sleep();
}
else
{
Console.ForegroundColor = ConsoleColor.White;
ShangHai = Program.PuTongGongJi(zs2.GongJi);
zs1.XueLiang = zs1.XueLiang - ShangHai; Console.WriteLine(zs2.MingZi + " 对 " + zs1.MingZi + " 发动了普通攻击,造成了" + ShangHai + "点伤害, " + zs1.MingZi + " 剩余" + zs1.XueLiang + "点血量!");
Console.WriteLine(); System.Threading.Thread.Sleep();
}
#endregion #region 判断胜负
if (zs1.XueLiang <= || zs2.XueLiang <= )
{
if (zs1.XueLiang <= && zs2.XueLiang <= )
{
Console.WriteLine("二位同归于尽了!!!");
}
else
{
if (zs1.XueLiang <= )
{
Console.WriteLine(zs2.MingZi + "获得了最终胜利!!!");
}
else
{
Console.WriteLine(zs1.MingZi + "获得了最终胜利!!!");
}
}
break;
}
#endregion
} Console.ReadKey();
} /// <summary>
/// 生成普通攻击的浮动攻击值
/// </summary>
/// <param name="a">普通攻击的基础攻击力</param>
/// <returns></returns>
public static int PuTongGongJi(int a)
{
int cc = ;
Random r = new Random();
int aa = r.Next(, );
int bb = r.Next(, );
if (bb == )
{
cc = a + aa;
}
else
{
cc = a - aa;
}
return cc;
}
}
}
C# 推箱子游戏&对战游戏的更多相关文章
- C++学习(九)(C语言部分)之 项目 推箱子游戏
游戏制作 推箱子 步骤分析 1.模板 2.模板分析 组成元素: 空地 墙 人 目的地 箱子 背景 3.如何操作 通过WASD键盘操作人,推着箱子,到达目的地,游戏结束,如果箱子卡在死角则游戏失败 4. ...
- 推箱子 BFS
[编程题] 推箱子 大家一定玩过“推箱子”这个经典的游戏.具体规则就是在一个N*M的地图上,有1个玩家.1个箱子.1个目的地以及若干障碍,其余是空地.玩家可以往上下左右4个方向移动,但是不能移动出地图 ...
- c#部分---网吧充值系统;简易的闹钟;出租车计费;简单计算器;对战游戏;等额本金法计算贷款还款利息等;随机生成10个不重复的50以内的整数;推箱子;
网吧充值系统namespace ConsoleApplication1 { class Program { struct huiyuan { public string name; public st ...
- VS 游戏:推箱子&对战游戏
推箱子 //只做了两关 class Program { static void Main(string[] args) { ; ; ; ; ; ; ; #region 地图绘制 , , ] { { { ...
- c语言游戏推箱子
前两天做了推箱子小游戏,看似简单的一个小游戏背后却 有巨大的秘密,这秘密就是一大堆逻辑. 自从学习了函数过后,的确是解决了很多问题,而且调用很方便,尽管我现在都不是很会调用. 写完一个函数,准备测试一 ...
- JavaScript写一个小乌龟推箱子游戏
推箱子游戏是老游戏了, 网上有各种各样的版本, 说下推箱子游戏的简单实现,以及我找到的一些参考视频和实例: 推箱子游戏的在线DEMO : 打开 如下是效果图: 这个拖箱子游戏做了移动端的适配, 我使用 ...
- 用C#制作推箱子小游戏
思路分析: 一.制作一个地图 二.地图中放置墙.箱子.人.目标等 三.让小人动起来完成推箱子动作 游戏制作: 1.按照上述地图制作一个地图 (12行×13列) 地图可以看做是行和列组成的,即可以看做 ...
- [转]Flash ActionScript2.0面向对象游戏开发-推箱子
本文转自:http://www.alixixi.com/Dev/W3C/Flash/2007/2007070868666.html 概述: Flash ActionScript2.0是一种面向对向的编 ...
- c++、c实现推箱子小游戏
经过四次的修改和优化,终于将推箱子这个游戏完整的写出来了,今天就像大家分享一下这个游戏的编写. 这个游戏界面的编写总的来说不困难,主要是推动箱子的算法. (1)利用数组和windows api 即可写 ...
随机推荐
- ABP+AdminLTE+Bootstrap Table权限管理系统第六节--abp控制器扩展及json封装以及6种处理时间格式化的方法
返回总目录:ABP+AdminLTE+Bootstrap Table权限管理系统一期 一,控制器AbpController 说完了Swagger ui 我们再来说一下abp对控制器的处理和json的封 ...
- 转:SpringMVC之类型转换Converter(GenericConverter)
转: http://blog.csdn.net/fsp88927/article/details/37692215 SpringMVC 之类型转换 Converter 1.1 目录 1.1 目录 1. ...
- Redis常用操作-------Hash(哈希表)
1.HDEL key field [field ...] 删除哈希表 key 中的一个或多个指定域,不存在的域将被忽略. 在Redis2.4以下的版本里, HDEL 每次只能删除单个域,如果你需要在一 ...
- C_运算符_逻辑表达式
// 除法取余运算符的例子 //2018年9月19日22:44:21 # include<stdio.h> int main(void) { printf(%, %-, -%, -%-, ...
- 《Linux内核分析》第八周笔记 进程的切换和系统的一般执行过程
20135132陈雨鑫 + 原创作品转载请注明出处 + <Linux内核分析>MOOC课程http://mooc.study.163.com/course/USTC-1000029000 ...
- 个人git链接和git学习心得总结
个人git链接和git学习心得总结 个人git链接: https://github.com/hanzhaoyan Git 是 Linux 的创始人 Linus Torvalds 开发的开源和免费的版本 ...
- 【软件工程】5.8 黑盒&白盒测试
代码链接:http://www.cnblogs.com/bobbywei/p/4469145.html#3174062 搭档博客:http://www.cnblogs.com/Roc201306114 ...
- C++中struct 和 class的区别
首先,C++中类的定义,从狭义上理解,就是我们使用的class类型.从广义上,类就是定义了一个新的类型和新的作用域,它具有成员函数和成员数据. 而对广义类定义的实现分为两种,一种是使用struct实现 ...
- np.array与np.ndarray区别
(Numpy中ndarray和array的区别是什么?我在哪儿能够找到numpy中相应的实现?) 答:Well, np.array is just a convenience function to ...
- chrome启用flash不询问
69版本之后 打开 chrome://flags/#enable-ephemeral-flash-permission 把它从Default改为Disabled 重新打开Chrome,进入 chrom ...