C#小游戏—钢铁侠VS太空侵略者

      身为漫威迷,最近又把《钢铁侠》和《复仇者联盟》系列又重温了一遍,真的是印证了那句话:“读书百遍,其意自现”。看电影一个道理,每看一遍,都有不懂的感受~ 不知道大伙是不是也有同样的感受,对于好的电影,真的是回味无穷!


     本篇博文也是因《复仇者联盟1》的启发,C#语言实现的一个小游戏,所以游戏命名就叫“钢铁侠VS太空侵略者》了!

     先上一个游戏原型图:

      Talk is Cheap,Show me the Code!

       代码方面没有太难的操作,主要依赖于Timer控件:

     分别用来监控游戏中Iron man 子弹移动,侵略者左右移动,往下移动,侵略者子弹移动,子弹碰撞,以及观察者监控(主要校验生命值),具体代码如下:

       侵略者界面生成:

private void CreateControl(Form p)
{PictureBox pb = new PictureBox();pb.Location = new Point(x, y);pb.Size = new Size(width, height);pb.BackgroundImage = Properties.Resources.invader;pb.BackgroundImageLayout = ImageLayout.Stretch;pb.Name = "Alien";p.Controls.Add(pb); 
}
public void CreateSprites(Form p)
{for(int i = 0; i < rows; i++){for(int j = 0; j < columns; j++){CreateControl(p);x += width + space; }y += height + space;x = 150; }
}

       键盘事件绑定:

private void Pressed(object sender, KeyEventArgs e)
{if (e.KeyCode == Keys.A || e.KeyCode == Keys.Left){moveLeft = true;}else if (e.KeyCode == Keys.D || e.KeyCode == Keys.Right){moveRight = true;}else if (e.KeyCode == Keys.Space && game && !fired){Missile();fired = true;}
}
private void Released(object sender, KeyEventArgs e)
{if (e.KeyCode == Keys.A || e.KeyCode == Keys.Left){moveLeft = false;}else if (e.KeyCode == Keys.D || e.KeyCode == Keys.Right){moveRight = false;}else if (e.KeyCode == Keys.Space){fired = false;}
}

       Iron man 左右移动:

 private void PlayerMove(object sender, EventArgs e){if (moveLeft && Player.Location.X >= 0){Player.Left--;}else if (moveRight && Player.Location.X <= limit){Player.Left++;}}

       子弹发射:

 private void FireBullet(object sender, EventArgs e)
{foreach (Control c in this.Controls){if (c is PictureBox && c.Name == "Bullet"){PictureBox bullet = (PictureBox)c;bullet.Top -= 5;if (bullet.Location.Y <= 0){this.Controls.Remove(bullet); }foreach(Control ct in this.Controls){if (ct is PictureBox && ct.Name == "Laser"){PictureBox laser = (PictureBox)ct;if (bullet.Bounds.IntersectsWith(laser.Bounds)){this.Controls.Remove(bullet);this.Controls.Remove(laser);pts++;Score(pts);}}}foreach(Control ctrl in this.Controls){if (ctrl is PictureBox && ctrl.Name == "Alien"){PictureBox alien = (PictureBox)ctrl;if (bullet.Bounds.IntersectsWith(alien.Bounds) && !Touched(alien)){this.Controls.Remove(bullet);this.Controls.Remove(alien);aliens.Remove(alien);pts += 5;Score(pts);CheckForWinner();}else if (bullet.Bounds.IntersectsWith(alien.Bounds) && Touched(alien)){this.Controls.Remove(bullet);this.Controls.Remove(alien);delay.Add(alien);pts += 5;Score(pts);CheckForWinner();}}}}}
}

       子弹

private void Missile()
{PictureBox bullet = new PictureBox();bullet.Location = new Point(Player.Location.X + Player.Width / 2, Player.Location.Y - 20);bullet.Size = new Size(5, 20);bullet.BackgroundImage = Properties.Resources.bullet;bullet.BackgroundImageLayout = ImageLayout.Stretch;bullet.Name = "Bullet";this.Controls.Add(bullet);
}

       侵略者移动:

private void AlienMove()
{            foreach(PictureBox alien in aliens){alien.Location = new Point(alien.Location.X + left, alien.Location.Y + top);SetDirection(alien);Collided(alien);                }
}
private void Collided(PictureBox a)
{if (a.Bounds.IntersectsWith(Player.Bounds)){gameOver();}
}

       子弹移动效果:

 private void Beam(PictureBox a)
{PictureBox laser = new PictureBox();laser.Location = new Point(a.Location.X + a.Width / 3,a.Location.Y + 20);laser.Size = new Size(5, 20);laser.BackgroundImage = Properties.Resources.laser;laser.BackgroundImageLayout = ImageLayout.Stretch;laser.Name = "Laser";this.Controls.Add(laser);
}
private void StrikeSpan(object sender, EventArgs e)
{Random r = new Random();int pick;if (aliens.Count > 0){pick = r.Next(aliens.Count);Beam(aliens[pick]);}
}
private void DetectLaser(object sender, EventArgs e)
{foreach(Control c in this.Controls){if (c is PictureBox && c.Name == "Laser"){PictureBox laser = (PictureBox)c;laser.Top += 5;if (laser.Location.Y >= limit){this.Controls.Remove(laser); }if (laser.Bounds.IntersectsWith(Player.Bounds)){this.Controls.Remove(laser); LoseLife(); }                    }}
}

        主要核心代码如上,下面看下运行效果图:

效果图一

效果图二

      何以解忧唯有撸码,欢迎有兴趣的朋友,联系我一起探讨。如需源码,也请联系我,源码免费赠送,最后感谢您的耐心观看,赠人玫瑰,手留余香,觉得本文有些许意思和启发的,记得关注博主,您的支持,就是我写作莫大的动力!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/44563.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

学习JavaEE过程中遇到的各种(奇葩)问题

学习JavaEE过程中遇到的各种&#xff08;奇葩&#xff09;问题 问题一&#xff1a; The superclass “javax.servlet.http.HttpServlet” was not found on the Java Build Path 遇到这个问题的时候我尝试在网上找答案按着答案一步步操作。 这是在按着网上答案来的正确流程&a…

奇葩算法系列——猴子排序

首先我们介绍无限猴子定理 无限猴子定理最早是由埃米尔博雷尔在1909年出版的一本谈概率的书籍中提到的&#xff0c;此书中介绍了“打字的猴子”的概念。无限猴子定理是概率论中的柯尔莫哥洛夫的零一律的其中一个命题的例子。大概意思是&#xff0c;如果让一只猴子在打字机上随…

Maven项目中遇到的奇葩问题

场景描述 开发项目搞环境是一个非常蛋疼的问题&#xff0c;总是会遇到各种奇葩的问题&#xff0c;今天就遇到了一个跟Maven有关的。新开发一个项目&#xff0c;从SVN下载下来项目之后&#xff0c;pom.xml中Spring相关的Jar包就一直报如下红叉 后来发现我的maven 中是已经有…

你所遇到过得奇葩的需求

在网上看到大家在谈论碰到过的奇葩需求&#xff0c;看着看着一天的劳累都被欢乐冲散了&#xff0c;特地搜集大家的留言&#xff0c;整理出来&#xff0c;给大家分享一下&#xff0c;希望也能给你的生活添加点乐子&#xff0c;哈哈哈。 0、部门老大&#xff1a;你&#xff0c;做…

PVE7更新AQC107网卡驱动,解决奇葩问题。

背景介绍 前段时间自己组装了一台生产力&#xff0c;期间在TB买了张AQC107的万兆电口网卡&#xff0c;回来后发现在PVE7环境下每次重启或启动后网卡总是没反应或者不会自动协商到10G&#xff0c;拔下来插到win主机上没问题&#xff0c;基本确定是驱动的问题&#xff0c;那么就着…

html文档中引入axios遇到的奇葩问题

html文档中引入axios遇到的奇葩问题 在body中引入代码&#xff1a; <script src"https://unpkg.com/axios/dist/axios.min.js"></script>然后插入一个按钮&#xff1a; <input type"button" value"get请求" class"get&qu…

奇葩问题☞ npm install 报错 gyp ERR

gyp ERR! node -v v16.13.1 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok 直接看图吧&#xff0c;咱也是第一次遇见这种错误&#xff0c;怎么办&#xff01;&#xff01;&#xff01; 于是百度了好久&#xff0c;尝试了好几种方法&#xff0c;但都不行。 比如&#xff1a;第一…

奇葩问题 npm install 报错 gyp ERR

gyp ERR! node -v v16.13.1 gyp ERR! node-gyp -v v3.8.0 gyp ERR! not ok 直接看图吧&#xff0c;咱也是第一次遇见这种错误&#xff0c;怎么办&#xff01;&#xff01;&#xff01; 于是百度了好久&#xff0c;尝试了好几种方法&#xff0c;但都不行。 比如&#xff1a;第一…

Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day18】—— 奇葩问题合集

大家好&#xff0c;我是陈哈哈&#xff0c;北漂五年。认识我的朋友们知道&#xff0c;我是非科班出身&#xff0c;半路出家&#xff0c;大学也很差&#xff01;这种背景来北漂&#xff0c;你都不知道你会经历什么&#x1f643;&#x1f643;。   连续17天的技术文想必也是快吐…

聊聊机器如何“写“好广告文案?

作者 | 张超 “除非你的广告建立在伟大的创意之上&#xff0c;否则它就像夜航的船&#xff0c;不为人所注意。” —— 大卫奥格威&#xff0c;现代广告业奠基人 01 引子 创意作为一种信息载体&#xff0c;将广告主的营销内容呈现给用户&#xff0c;辅助用户消费决策&#xf…

讨论 | 新浪程序员因加班不在现场错失年会头奖,公司应该给吗?

又到了一年一度晒年终奖&#xff0c;拉仇恨的时候了&#xff0c;作为互联网公司&#xff0c;年会已成为每年的例行是项目。就在昨天刚刚结束的新浪年会上&#xff0c;有位程序员因为在公司上线合并代码&#xff0c;没有到现场&#xff0c;错失了拿头奖的机会。头奖2000股新浪股…

码农犯错导致多人赢取头奖,麦当劳叔叔一笑谅解

IT后台一个技术故障使四个人脱贫&#xff1a;在名为Monopoly的麦当劳大富翁游戏的抽奖活动中&#xff0c;本来设置了两名各10万欧元的头奖。 但开奖四小时后&#xff0c;竟有四个人一起获得头奖。 在11月中旬开始的“麦当劳大富翁”游戏抽奖中&#xff0c;顾客首次通过麦当劳的…

厉害了!数据科学杯:10000名数据科学家参加,清华博士斩获头奖 | GTC 2017

雷锋网【AI科技评论】按&#xff1a;在刚刚过去的2017数据科学杯&#xff08;2017 Data Science Bowl&#xff09;吸引了全球10000名数据科学家参赛&#xff0c;大家在癌症检测算法上各显神通。其中来自清华的两位科学家组成的团队捧得一等奖。此外所有的获奖团队将会在即将到来…

Hash算法总结

1. Hash是什么&#xff0c;它的作用 先举个例子。我们每个活在世上的人&#xff0c;为了能够参与各种社会活动&#xff0c;都需要一个用于识别自己的标志。也许你觉得名字或是身份证就足以代表你这个人&#xff0c;但是这种代表性非常脆弱&#xff0c;因为重名的人很多&#x…

Randao 可证公平随机数(VRF)白皮书

Randao 可证公平随机数白皮书 randao.org September 11, 2017 Abstract Randao 基于区块链技术&#xff0c;提供开源的、去中心化的、社交化的、可证公平的随机数生成服务。Randao 继承了常用随机数发生器的不可控制性及不可预测性&#xff0c;同时具备其所不具有的可参与性及可…

区块链之零知识证明(zk-SNARK从小白到明白)

零知识证明&#xff1a;从小白到明白 如今&#xff0c;知识快餐业发达&#xff0c;区块链这么火的领域自然不会落下。经过一轮轮扫盲&#xff0c;共识、工作量证明、闪电网络等等概念对普罗大众已不再陌生&#xff0c;甚至各种解构、比喻、引申&#xff0c;将术语炒得比本义还…

谈一谈今年的移动互联网寒冬

转载请注明出处&#xff1a;http://blog.csdn.net/guolin_blog/article/details/52316072 本文同步发表于我的微信公众号&#xff0c;扫一扫文章底部的二维码或在微信搜索 郭霖 即可关注&#xff0c;每天都有文章更新。 大家好&#xff0c;好像有段时间没写技术文章了。主要是最…

区块链:7 个步骤入门区块链

2017 年是比特币大爆发的一年。在潜水这么多年之后&#xff0c;比特币的价格一下子从 1000 美元左右飞涨至将近 20000 美元。多少人摇身一变&#xff0c;成了“密码学货币交易专家”。 赶上好时候确实可以狠赚一笔&#xff0c;不过醒醒吧&#xff0c;盛宴已散。 -2013 年 10 月…

如何用 Java 实现简单的区块链

点击上方蓝色“程序猿DD”&#xff0c;选择“设为星标” 回复“资源”获取独家整理的学习资料&#xff01; 来源 | 公众号「锅外的大佬」 1. 概述 本文中&#xff0c;我们将学习区块链技术的基本概念。也将根据概念使用 Java 来实现一个基本的应用程序。 进一步&#xff0c;我…

国字号遥感算法大赛!涵盖主流视觉任务,头奖10万人民币!

点击我爱计算机视觉标星&#xff0c;更快获取CVML新技术 大赛背景 本届遥感图像稀疏表征与智能分析竞赛由国家自然科学基金委信息科学部、“空间信息网络基础理论与关键技术”重大研究计划指导专家组主办&#xff0c;旨在推动“空间信息网络基础理论与关键技术”重大研究计划科…