1.步兵能力

按照输入移动部队

    def move(self):if self.v > 0 and self.free:print(self.name+"##########")self.speed = max(eval(input("input speed")),self.speed)a,b = [eval(i) for i in input("input direction"+self.name).split()]d = (a**2+b**2)**0.5a = a/d * self.speed if d !=0 else 0b = b/d * self.speed if d !=0 else 0c = [a,b]for i in range(2):self.location[i] += c[i]if self.v > 0 and not self.free:self.speed = random.uniform(0,2) * self.speeda,b = [1,1]d = (a**2+b**2)**0.5a = a/d * self.speed if d !=0 else 0b = b/d * self.speed if d !=0 else 0c = [a,b]for i in range(2):self.location[i] += c[i]

按照指令开火射击

    def fire(self,another):if self.v > 0 and another.flag != self.flag and self.a > 0:d = 0for i in range(2):d += (self.location[i]-another.location[i])**2d = d**0.5if d < 1:print("fire"+str(self.location))another.v -= self.kself.a -= 1

完整代码

main部分

import matplotlib.pyplot as plt
from troops import *
from do import *if __name__ == "__main__":for ii in range(10):for i in I:try:aa,bb = i.report()except:continueplt.scatter(aa,bb,label=i.name,c="blue" if i.flag == "US" else "red")plt.text(aa,bb,i.name,fontsize=10)plt.legend()plt.show()plt.savefig(str(ii)+".jpg")plt.clf()for i in US:i.move()for i in JPA:i.move()for i in US:print("give order to"+i.name)c = input("fire=F,not fire=N")if c == "F":for ii in JPA:i.fire(ii)for i in JPA:for ii in US:i.fire(ii)   print("the war is over")for i in I:if i.v > 0:print(i)

troop部分

import randomclass infantry:def __init__(self,flag,name,location=[0,0],speed=1,v=100,k=10,a=10,free=False):self.location = locationself.speed = speedself.v = vself.k = kself.name = nameself.flag = flagself.a = aself.free = freedef move(self):if self.v > 0 and self.free:print(self.name+"##########")self.speed = max(eval(input("input speed")),self.speed)a,b = [eval(i) for i in input("input direction"+self.name).split()]d = (a**2+b**2)**0.5a = a/d * self.speed if d !=0 else 0b = b/d * self.speed if d !=0 else 0c = [a,b]for i in range(2):self.location[i] += c[i]if self.v > 0 and not self.free:self.speed = random.uniform(0,2) * self.speeda,b = [1,1]d = (a**2+b**2)**0.5a = a/d * self.speed if d !=0 else 0b = b/d * self.speed if d !=0 else 0c = [a,b]for i in range(2):self.location[i] += c[i]def report(self):if self.v > 0:return self.locationelse:passdef fire(self,another):if self.v > 0 and another.flag != self.flag and self.a > 0:d = 0for i in range(2):d += (self.location[i]-another.location[i])**2d = d**0.5if d < 1:print("fire"+str(self.location))another.v -= self.kself.a -= 1infantry_1 = infantry(flag="US",name="H",location=[0,0],free=True)
infantry_2 = infantry(flag="US",name="D",location=[2,1],free=True)
infantry_3 = infantry(flag="US",name="J",location=[1.5,1],free=True)
infantry_4 = infantry(flag="US",name="P",location=[1.2,0],free=True)
infantry_5 = infantry(flag="JAP",name="HP",location=[1.5,4])
infantry_6 = infantry(flag="JAP",name="DJ",location=[1.5,2])
infantry_7 = infantry(flag="JAP",name="HR",location=[8,6])
infantry_8 = infantry(flag="JAP",name="DE",location=[2,4])I = [infantry_1,infantry_2,infantry_3,infantry_4,infantry_5,infantry_6,infantry_7,infantry_8]US = [i for i in I if i.flag=="US"]
JPA = [i for i in I if i.flag=="JPA"]

游戏效果

不错的游戏

耐玩!!

下次再改进!!

Python一个回合制兵棋小游戏(1)相关推荐

  1. JAVA 面向对象编程练习(一个回合制的战斗游戏:战士,骑兵,法师,电脑互相攻击)

    文章目录 一. 小编有话说 二. 游戏的要求 三. 编程前的准备 四. 代码及详细注释 五. 结果 一. 小编有话说 前面一篇文章写了JAVA面向对象编程的思想,本文主要展示关于面向对象编程的实例(一 ...

  2. python实现回合制对战游戏-面向对象编程

    什么是面向对象编程: Object Oriented Programming,简称OOP,面向对象编程就是以类的方式组织代码,以对象的形式封装数据. # 面向过程的编程:着重于做什么 # 面向对象的编 ...

  3. python实现回合制对战小游戏

    回合制对战游戏 1.创建角色:姓名.性别 2.创建房间: 角色可加入房间 房间内的人可互打 房间上限3人 3.战斗: 装备.默认血量.被正常攻击掉血与有装备掉血不同 #回合制对战游戏 #角色,房间,战 ...

  4. 奇美拉遇上战术小队,回合制射击策略游戏的小暖春为这个类型带来了什么?

    GEARS:TACTICS 9月底的这段时期,两款'类X-COM'游戏先后发售.分别是业内标杆<X-COM>系列的新作<奇美拉小队>以及微软一线IP<战争机器>衍生 ...

  5. python井字棋_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  6. python井字棋游戏人机对战_用Python做一个井字棋小游戏

    井字棋是一个经典的小游戏,在九宫格上玩家轮流画OXO,当每列或每行或是两个对角成一线时便是获胜. 今天就用Python编写一个井字棋小游戏,与电脑对战. 程序执行画面如下图所示: 程序提供了两种人工智 ...

  7. 【六一特别文章】Python编写一个六一儿童节问答小游戏及趣味比赛

    随着六一儿童节的到来,我们可以为孩子们编写一个有趣的小游戏,让他们在游戏中学习有关六一儿童节的知识.本文将介绍如何用Python编写一个六一儿童节问答小游戏及趣味比赛. 首先,我们需要准备一些有关六一 ...

  8. HTML5 canvas 实现回合制战棋游戏(1):加载和绘制图形

    HTML5 canvas 实现回合制战棋游戏(1):加载和绘制图形 游戏介绍 完整代码 代码目录 游戏运行 HTML5 canvas 绘制图形 canvas 介绍 绘制函数 加载图片 生物行走动画绘制 ...

  9. Python初学者-双人对战小游戏

    --------------------------------------Python初学者 学习历程分享------------------------------------ 小游戏-双人决战之 ...

最新文章

  1. 做好自己,一切都是最好的安排
  2. 使用Netty,我们到底在开发些什么?
  3. discuz(dz) SSO(单点,同歩,异步)登录 --转
  4. 产品设计眼中的运营,互联网营销
  5. 2019CCF自主可控计算机大会召开 中科院院士吁自力更生
  6. 基于FPGA的BP神经网络的verilog实现
  7. 人的执念真的是非常的可怕
  8. mysql快速随机_MySQL随机取数据最高效的方法
  9. 如何培养编程所需要的逻辑思维?
  10. k8s容器内的东西复制出来_容器 | Docker 如此之好,你为什么还要用k8s
  11. linux java amr转mp3_部署ffmpeg及amr转mp3方法
  12. 看不起胖子?自如员工爆料身高、体重决定能否晋升,官方回应侧面实锤?
  13. 如何使用PL/SQL Developer查看和杀掉session
  14. gcc/g++ 编译与链接(2)
  15. oc 画一个圆弧_弯管半圆弧滑块抽芯结构拆解,3个核心要点
  16. Word中插入三线格算法公式,放大不变形
  17. ElasticSearch版本与Jar包冲突
  18. 网易企业邮箱登录服务器出错,网易企业邮箱登录出现故障,无法正常登录
  19. 基于Bootstrap模板创建门户网站vue项目03
  20. 光功率 博科交换机_交换机查看光模块型号及收发光功率命令

热门文章

  1. STM32串口DMA方式接收数据。类似环形FIFO。超省CPU资源!
  2. 【详细】阿里云Accesskey创建步骤记录
  3. 央行上海总部推出企业信用报告网银查询渠道
  4. 微信开发者工具下载及调试
  5. Pandas之十二速查手册
  6. Flask SQLAlchemy - 2013 Lost Connection
  7. 专升本英语——语法知识——高频语法——第四节 定语从句(限制性定语从句-非限制性定语从句)【学习笔记】
  8. vivado安装步骤
  9. 【BJOI2019】勘破神机(下降幂转自然幂)(第一类斯特林数)(特征方程)
  10. 安卓手机通过USB连接路由器有线上网