打飞机游戏

最近接到一个小小的活,做个打飞机游戏,通过socket连接数据,因为用户各种原因,最后退款了,所以我把源码发上来,给大家做个参考

要求是这样的,

双方摆放战机,摆放好以后,输入坐标,打飞机,打到头部,就算对方死亡,打到身体,就算受伤,打到空白处,算无效攻击,界面是这样的

其实这个游戏比较简单,主要有两点,一个是数据的接收和返回,一个是界面的显示,当然,ai部分,我用的随机位置来确定了,因为也没要求.

  private void ReceiveTask(){Task.Run(() =>{while (true){byte[] buffer = new byte[32];int TotalReceiveLength = 0;NetworkStream stream = client.GetStream();do{var reclen = stream.Read(buffer, TotalReceiveLength, buffer.Length - TotalReceiveLength);if (reclen == 0) break;TotalReceiveLength += reclen;} while (stream.DataAvailable);string msg = Encoding.UTF8.GetString(buffer);msg=msg.TrimEnd('\0');var arr = msg.Split(new char[] { ',' });this.Invoke(new Action(() =>{if (arr[0] == "0"){//敌方轰炸var colindex = int.Parse(arr[1]);var rowindex = int.Parse(arr[2]);var v = arr1[colindex - 1, rowindex - 1];string retmsg ="1,"+ arr[1] + "," + arr[2] + ",";v.isboom = true;//设定为该点被轰炸if (v.status == 0){//空retmsg += "0,";}else if (v.status == 1){//伤retmsg += "1,";}else if (v.status == 2){//死retmsg += "2,";}//判断是否游戏结束,我方所有飞机都被炸死?List<MyGridCell> list = new List<MyGridCell>();for (int i = 0; i < 10; i++)for (int j = 0; j < 10; j++){list.Add(arr1[j, i]);}var count = list.Where(p => p.isboom).Where(p => p.status == 2).Count();if (count == 3)retmsg += "1";else retmsg += "0";//游戏结束标记//返回轰炸结果byte[] sendbuf = Encoding.UTF8.GetBytes(retmsg);stream = client.GetStream();stream.Write(sendbuf, 0, sendbuf.Length);button3.Enabled = true;if (count == 3){lblstatus.Text = "你输了!";button3.Enabled = false;}else{if (checkBox1.Checked){//自动下棋int x=0;int y=0;bool bfind = false;while(!bfind){x = r.Next(1, 11);y = r.Next(1, 11);if(arr2[x-1,y-1]==-1){bfind = true;break;}}textBox1.Text = x.ToString() + "-" + y.ToString();for (int i = 0; i < 50; i++){Thread.Sleep(5);Application.DoEvents();}button3.PerformClick();}}ShowMyPlane();}else{//我方轰炸后的返回结果//0空    1伤     2死var colindex = int.Parse(arr[1]);var rowindex = int.Parse(arr[2]);var result = int.Parse(arr[3]);var isgameover = int.Parse(arr[4]);arr2[colindex - 1, rowindex - 1] = result;ShowEnemyPlane();if(isgameover==1){lblstatus.Text = "你赢了!";}}}));}});}
 /// <summary>/// 将飞机状态显示在图上/// </summary>private void ShowMyPlane(){for (int i = 0; i < 10; i++)for (int j = 0; j < 10; j++){var c = arr1[j, i];var d = dgv.Rows[i].Cells[j];if (c.status == 0){d.Value = "";if (c.isboom){d.Style.BackColor = Color.Green;d.Value = "空";}else d.Style.BackColor = Color.White;}else if (c.status == 1){//身d.Value = c.planeindex;if (c.isboom){d.Style.BackColor = Color.Yellow;d.Value = "伤";}else d.Style.BackColor = Color.Brown;}else{//头d.Value = c.planeindex;if (c.isboom){d.Style.BackColor = Color.Red;d.Value = "死";}else d.Style.BackColor = Color.Brown;}}}private void ShowEnemyPlane(){for (int i = 0; i < 10; i++)for (int j = 0; j < 10; j++){var c = arr2[i, j];if (c == -1){//未被轰炸enemydgv.Rows[j].Cells[i].Style.BackColor = Color.White;}else if (c == 0){enemydgv.Rows[j].Cells[i].Value = "空";enemydgv.Rows[j].Cells[i].Style.BackColor = Color.Green;}else if (c == 1){enemydgv.Rows[j].Cells[i].Value = "伤";enemydgv.Rows[j].Cells[i].Style.BackColor = Color.Yellow;}else if (c == 2){enemydgv.Rows[j].Cells[i].Value = "死";enemydgv.Rows[j].Cells[i].Style.BackColor = Color.Red;}}}public class bodypoint{public int x { get; set; }public int y { get; set; }//0 身体   1头public int flag { get; set; }}private void PlacePlane(int rowidx, int colidx, int flag){var lst = new List<bodypoint>();lst.Add(new bodypoint(){x = colidx,y = rowidx,flag = 1,});//5lst.Add(new bodypoint(){x = colidx - 2,y = rowidx + 1,flag = 0,});lst.Add(new bodypoint(){x = colidx - 1,y = rowidx + 1,flag = 0,});lst.Add(new bodypoint(){x = colidx,y = rowidx + 1,flag = 0,});lst.Add(new bodypoint(){x = colidx + 1,y = rowidx + 1,flag = 0,});lst.Add(new bodypoint(){x = colidx + 2,y = rowidx + 1,flag = 0,});//1lst.Add(new bodypoint(){x = colidx,y = rowidx + 2,flag = 0,});//3lst.Add(new bodypoint(){x = colidx - 1,y = rowidx + 3,flag = 0,});lst.Add(new bodypoint(){x = colidx,y = rowidx + 3,flag = 0,});lst.Add(new bodypoint(){x = colidx + 1,y = rowidx + 3,flag = 0,});foreach (var v in lst){if (v.flag == 1){arr1[v.x - 1, v.y - 1].status = 2;arr1[v.x - 1, v.y - 1].planeindex = flag;}else{arr1[v.x - 1, v.y - 1].status = 1;arr1[v.x - 1, v.y - 1].planeindex = flag;}}}

完整代码在此处下载:

https://download.csdn.net/download/LinuxCard/87218021

飞机游戏,飞机大战,c#,源代码相关推荐

  1. Python 游戏编程之实现飞机大战(含源代码)

    点击上方蓝色小字,关注"涛哥聊Python" 重磅干货,第一时间送达 来自:CSDN,作者:逐梦er 链接:https://zhumenger.blog.csdn.net/arti ...

  2. c语言小游戏-飞机大战

    今天我们来尝试用easyx图形库实现c语言小游戏-飞机大战(源代码和图片已经在结尾给出) 先引用头文件 #include<stdio.h> #include<time.h>// ...

  3. 【Python】Python小游戏--飞机大战

    一.前言 今天已经初四,舒服的在家躺尸的春节也算过去了,又要开始辛勤的(苦逼的)学习和工作了.说点题外话,今年春节的病毒疫情真的弄的人心惶惶,我也在这为国家和武汉加油,也向一线工作人员致敬,希望早日结 ...

  4. 用JAVA制作小游戏——飞机大战(三)

    本篇博客是对飞机大战游戏项目完整代码的展示 详细代码讲解: 用JAVA制作小游戏--飞机大战(一) 用JAVA制作小游戏--飞机大战(二) 最下方附整个程序的文件下载链接 代码展示 主界面 impor ...

  5. 用JAVA制作小游戏——飞机大战(二)

    本篇博客是对飞机大战游戏使用代码的展示 重难点: 首先需要鼠标能够控制战机,使鼠标在窗口内时始终能够使战机的位置与鼠标相同,实现鼠标控制战斗机移动. 其次需要能够以一定的速度产生子弹和敌机,并且以一定 ...

  6. cocos2d-x小游戏——飞机大战

    上周,我做了一个基于 cocos2d-x 的飞机大战的游戏,因为我刚学cocos2d-x没多久,所以这个飞机大战很多都是看着别人的教程,再加上自己的一些想法,来做的. 下面我想说一说我的思路. 飞机大 ...

  7. HTML源码小游戏——坦克大战、飞机大战、捕鱼达人

    捕鱼达人小游戏 飞机大战小游戏 坦克大战小游戏        关注公众号"程序员秋田君",回复 坦克大战.飞机大战.捕鱼达人等信息即可获取源码文件.                 ...

  8. java小游戏-java小游戏-飞机大战

    java小游戏-java小游戏-飞机大战 1 窗口创建 2 背景图片添加 3 启动页面制作 4 启动页面点击事件 5 游戏物体父类的编写 6 背景的移动 7 双缓存的添加 8 背景图片的循环出现 9 ...

  9. 【游戏开发实战】使用Unity 2019制作仿微信小游戏飞机大战(七):主角飞机碰撞与爆炸

    文章目录 零.教程目录 一.前言 二.本篇目标 三.飞机机碰撞组件:BoxCollider2D.Rigidbody2D 四.添加Tag:Enemy 五.主角飞机碰撞处理:OnTriggerEnter2 ...

最新文章

  1. 安装hadoop下的sqoop1.99.3及配置问题全解决
  2. 仲兆鹏 160809329 第5次
  3. 程序员面试100题之十四:强大的和谐
  4. Java程序员面试失败的5大原因
  5. jquery 检查 金钱类型
  6. 获取Linux命令源代码的方法【ZT】
  7. 数据可视化工具在教学中的意义
  8. python打包后怎么安装_别再问我怎么Python打包成exe了!
  9. Android Framework 全面分析 FallbackHome
  10. python控制系统仿真_MATLABSimulink与控制系统仿真(第3版)
  11. 全球名校AI课程库(23)| Harvard哈佛 · 基于Python/JavaScript的Web编程课程『Web Programming with Python and JavaScript』
  12. varchar和varchar2的区别
  13. oracle算加权平均的函数,如何用变异函数计算加权平均数?
  14. 用友u8服务器修改ipv4,用友U8-OA11.1 用友U8加密狗更换服务器了-用友U8
  15. PAT Basic 1068 万绿丛中一点红
  16. 『IT视界』 [IT风云]MyEclipse 8.5 开发环境配置 插件安装(转载)
  17. 从钢铁侠看Decorator 装饰者模式
  18. PS磨皮插件portraiture最新版磨皮工具
  19. 月过春枝似带烟的情境里
  20. 关于前端的CSS命名

热门文章

  1. 麦块服务器正版登,我的世界1.7.2服务器麦块
  2. java门店_Java门店管理系统 客户资料档案管理 库存管理 进销存 SSM项目源码
  3. AD7689中文学习笔记
  4. 卡巴斯基防火墙反***的设置技巧
  5. 北京轨道交通网将达六环 四环走1公里到地铁
  6. win10系统下GTX1080TI显卡配置tensorflow运行环境(都是泪系列)
  7. 电子邮件客户端:Foxmail for Mac中文免费版
  8. 华为最美小姐姐被外派墨西哥后...
  9. 车牌定位--颜色分割
  10. 什么是蒲公英内测托管平台?如何进行内测分发?