国庆阅兵的99式坦克与世界主战坦克比较及主战坦克排名(详细介绍)
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了国庆阅兵的99式坦克与世界主战坦克比较及主战坦克排名(详细介绍)相关的知识,希望对你有一定的参考价值。
答后加分 抄袭的爬
第一 美国mia2第二 德国豹2
第三 以色列的梅卡瓦
第四 俄罗斯的t90
第五 英国挑战者
第六 法国AMX勒克莱尔 中国99等等
因为它们确实没打过 所以说真不好排名
美国的数字化部队和强大的动力 攻击力和防御力 最主要的是实战 感觉它应该是第一 (科技含量是理论新豹2比较强 领先不少 但实战上不足多以排第二)
以色列的在动力和防护上比较强 与老美一样 追求数字化的突破 实战经验也大 所以排第三
俄罗斯 传统坦克强国 虽说t90在数字化上不算牛叉 但坦克多年来发展的底蕴和他强劲的动力和火力 再前5强力应该有他的位置
第五的英国挑战者2的信息化程度较高 装甲性能卓著 武器精准度高 很牛x的哦
第五之后 其他的坦克虽说都也牛x 但总体上只是说数据 没啥真正的可比性
作为第三代的中国t99 很多人说他能进前5 甚至前3 我个人认为他单挑可以 但在集团作战中他真的还有很远的路要做 不单单是机动和防护的问题 数字化上的缺陷不是一点半点 与老美和老欧那些坦克比起来 还有很远的路要走 有人说t99火力猛 125的炮 2000多米轰透老美最强的mia2 感觉有点假
不知道楼主同意我的看法不
个人还是认为老美的和豹2 最好 不知道还能不能看见他俩的对决
现在世界强国对坦克的需求已经不是那么的强烈了 中国的坦克只要能打过日本 印度 东南亚 俄罗斯那帮孙子就行了 和美国打 还是靠空军和海军吧 参考技术A 说明:火力评分:火炮性能(侵彻力、射速、射程、俯仰角度、炮塔角速度、射击精度、使用寿命等),火控系统(数字化程度、反应速度、操作难易性等),弹药性能(常规炮弹性能、炮射导弹性能等),备弹数量及辅助武器等综合分数;防护评分:包括主动防护和被动防护。主要为坦克自身装甲性能(防护能力、装甲部位、挂装模式等)、防御结构设计(车身结构、三防装置、灭火抑爆装置、弹仓防护、人员逃生系统等)、辅助防御设备(主/被动防御装置、光电对抗/干扰装置等)性能及有效性,并考虑加入坦克的伪装隐身性能和战术机动能力对坦克防护的加权分数;机动评分:主要包括战术机动能力,即平台的灵活性(发动机功率、单位功率、最大公路/越野速度、加变速性能、传动系统性能、操作性能等),战略机动能力(最大航程、路桥通过性、战略投送难易性、发动机及传动系统可靠性、油耗、乘员耐受性等),并考虑加入战场补给、维护难易性及坦克使用对环境(雨雪、寒冷、潮湿、高温、高原等)的述求或适应能力等加权分数;信息化评分:坦克获得战场信息(实时战场态势信息的质量和有效性、通讯设备数字化程度和可靠性等)及与外界联系的程度(数据链共享、战场协同能力、),并考虑加入了使用国坦克作战战略战术指导理论的实用性、有效性、针对性及机乘人员平均操作水平等加权分数。
NO.1 美国M1A2 SEP艾布拉姆斯
[ 转自铁血社区 http://bbs.tiexue.net/ ]
火力:采用德国莱茵金属公司最新的L55RH-120mm滑膛炮,火炮性能非常出色。M1A2尤为精良的火控系统为其赢得高分。
防护:恶名于世的贫铀装甲使其获得优秀的正面防护力,独到的弹仓分离及泄压板、三防装置、抑火抑爆装置设计相当出色。
机动:M1A2采用了“欧洲动力包”,获得了强劲动力和良好可靠性,从而甩掉了海湾战争中“油老虎”的帽子。其战术和战略机动能力优秀,但由于车载设备太过娇贵,后勤保障及维护工作复杂繁琐、费用惊人,一般国家即便买的起也用不起,给其综合机动能力带来不小的扣分。
信息化:比较来看,M1A2 SEP最大优势在于遥遥领先的信息化程度。该坦克配备了最新的战场管理系统(BMS) ,能自动地提供双方部队位置、后勤信息、目标数据和命令等。采用了大量电子设备,能自动检测故障情况;电子传感系统提高了目标识别能力及与友邻坦克的信息传递能力;全新的指挥、控制、通信系统,提高了坦克的作战效能。M1A2配备了自主导航系统,通过GPS卫星定位系统能快速准确标定本身所在方位。这使其视听触角四通八达,灵敏迅捷,犹如装上了“千里眼,顺风耳”。这得益于美国独有的网络化战场信息共享能力。
NO.2 德国豹IIA6
火力:著名的莱因金属公司最新的55倍口径Rh120-L55120mm滑膛炮,炮口初速达到1750m/s,使用钨合金弹,在常温状态下穿深达900mm,而且精度相当高。射程5000m,为目前射程最远的坦克火炮。指挥仪式火控系统,反应时间6秒。作为北约战车标杆来说,豹IIA6的火力标准过高,以至于极少有出其右者。
[ 转自铁血社区 http://bbs.tiexue.net/ ]
防护:从北约内部进行的坦克射击对比试验数据来看,豹IIA6的装甲防护水平与M1A2几乎相当,尤其对地雷的防护能力达到了世界领先水平。这对于豹II来说极为不易。德国设计师的天赋令人折服。
机动:MTU公司研制的MB873Ka-501型4冲程12缸V型90°夹角水冷预燃室式增压中冷柴油机,是目前世界上最好的柴油发动机之一。发动机功率1100千瓦(1500马力),传动系统非常出色。在火力与防护性能上做到几近化境之时,也许很多人对坦克的机动性已不报有苛刻要求了。但豹II却做到了,做得比任何人都要好,这不能不说是个奇迹。虽然豹IIA6身宽体重,但考虑到欧洲平原的开阔地形,对其战略机动能力影响不大。
信息化:在豹II身上,坦克的传统三大性能已经做到极致,其信息化程度的提高是一个重点,A6同样又做到了!
NO.3 法国AMX勒克莱尔
火力:勒克莱尔装有52倍口径的CNI20式120mm滑膛炮,火炮外形独具特色,取消了炮身抽烟装置。火控系统设计更是巧妙,射速和首发命中率很高。
防护:法国每一代坦克都有崭新的设计理念出现。二战中被德军闪电战术击溃的阴霾,促使法国人将坦克火力及机动性摆在首位,但其刻意牺牲防护力去获得机动性的做法,在步兵反坦克能力急剧提高的今天,已不再适应。因此,法国地面武器工业集团(GIAT)在设计之初就明确地将提高坦克生存力放在首要位置,并采用了最先进的模块化设计技术和复合装甲技术进行车体和炮塔的设计,形成了勒克莱尔的独特风格。
[ 转自铁血社区 http://bbs.tiexue.net/ ]
机动:法国设计师一贯注重坦克的机动性能,独到的传动系统在德国心脏的强劲动力支持下,使勒克莱尔获得极其优秀的机动能力。值得一提的是该坦克所采用的高增压技术。勒克莱尔的加变速性能超凡,0~32km/h所需时间仅为4~6秒。由于轻巧灵便,其路桥通过性和最大航程优于其他欧美主站坦克,使其战略机动能力突出。
信息化:勒克莱尔全重约55t,其中车载电子设备重量占去75%,无怪勒克莱尔有“电脑坦克”的绰号。
NO.4 中国ZTZ-99G
火力:中国在火炮方面虽走了仿制-自制之路,但也在此过程中出于蓝而胜于蓝。ZTZ-99G采用国产52倍口径125mm高膛压滑膛炮,其威力之大在现役各国主站坦克中首屈一指,可以轻易洞穿当前所有主站坦克的前装甲。此外,99G还保留了苏系坦克火炮的一大优点,可以发射射程为5000m的激光制导导弹,对于先发制人的打击地面或空中目标意义重大。最新ZTZ-99G采用国产瞄导合一的大闭环式火控系统,达到世界先进水平。
防护:99G具备优异的防弹外型,炮塔正面采用了类似德国豹IIA5/A6的楔型设计,炮塔正面装甲厚度为500-600mm,外有双层的主动反应保护层,从而使得其实际防护层厚度为1000-1200mm。而美军M1A2坦克主炮的穿透力为810mm。99G最独具特色和震撼力的是顶置激光眩目压制干扰装置,可以干扰和破坏敌方昂贵的观瞄设备。使99G拥有了一招超众的必杀技,成为当前唯一具有防御性攻击力的主战坦克。
机动:采用了国产150HB型1103千瓦(1500马力)的涡轮增压中冷式大功率柴油机和新型高效传动系统,使99G最大公路速度达80km/h,最大越野度速60km/h,0~32km/h加速时间为12秒,最大行程为600km。但相对于中国的道路和桥梁和南方水网稻田等地区,99G的55t体重有些超标,且坦克操作性和发动机的可靠性也有待提高,使得99G的战略机动能力评分不高。
[ 转自铁血社区 http://bbs.tiexue.net/ ]
信息化:同苏系坦克一样,99G的最大缺点在于信息化程度不高。提高坦克的信息化程度当成为99G以后改进的重点。
NO.5 英国挑战者II
火力:自然,英国人固执地坚持线膛炮有其一定理由,那就是线膛炮独特的优点。就火炮性能而言,挑战者2的线膛炮,无论在射程,还是射击精度都要远远优于其他滑膛炮。但可惜的是,线膛炮的缺点和优点同样突出。它不仅容易磨损,寿命不佳,威力也受到限制。而且由于火炮自身及部件通用性问题,使后勤异常艰难。其精度也由于火控系统欠佳而难以发挥优势。
防护:英国人是复合装甲的发明者,它的坦克装甲性能鼎鼎有名。英国人格外追求防护能力,挑战者2的装甲性能卓著,非常霸道,全车装甲防护几乎滴水不漏。英国人认为,虽然机动性有所牺牲,但战场上首先要保证的是生存能力。这样它们就可以像骑士一样,优雅的进攻,而不必左躲右闪,有伤绅士风度。
机动:单从挑战者自身来看,或许英国人并不觉得其机动性有多糟糕,但同其他先进坦克一对比,挑战者65t体重的身躯立刻显得笨重无比,即使使用了“欧洲动力包”亦难以从根本上解决矛盾。加上前面说到的火炮问题,因此挑战者2的战术和战略机动能力非常一般。
信息化:与其他西方主站坦克一样,挑战者2的信息化程度较高。
[ 转自铁血社区 http://bbs.tiexue.net/ ]
NO.6 以色列MK-IV梅卡瓦4
火力:同日本90式一样,MK4坦克采用的是引进自德国莱茵金属公司的44倍口径120mm滑膛炮技术,经国产化后以色列人对其性能进一步提升,可以发射多种炮弹和火箭,并具备击落直升机的能力。MK4的火控系统同样是以色列开发的,性能优秀。炮塔顶部配备了一60mm门迫击炮。使MK4拥有了良好的火力性能。
防护:独特的动力舱前置设计为坦克内部乘员的安全提供了一道强大保障,另外,车体是整体铸造的、前上装甲焊接有良好防弹形状的装甲板、炮塔后面的挂链、车体后部仓门及极强的车底防地雷能力、炮塔独特设计等,无一不体现出以色列人的坦克智慧。常规防护性能做到了令人咂舌的地步。然而,在单兵反坦克火力迅猛发展的今天,纵然是MK也不能幸免。最近几次MK在战场被频频开膛破肚的报道,让人对MK不破金身的神话产生了质疑,尤其让苦心经营的以色列人大为恼火,颜面尽失。同时也是给今后各国反反坦克作战提出了挑战。当然,我们不能据此就否定梅卡瓦的优秀性能,M1A2在这方面的“战绩”要比MK“优秀”得多,我们同样没有否定M1A2。
机动:梅卡瓦4主战坦克的动力装置为狄塞尔内燃发动机,功率由梅卡瓦3的1300马力增高到1500马力。但整体而言,MK4的战术机动性能不佳。由于其设计使用环境主要是针对中东沙漠平原地带,致使其战略机动能力有限。
信息化:梅卡瓦4主战坦克在梅卡瓦3的基础上对装甲防护和站场管理系统进行了重大的改进和调整,实现现代战场数字化。
NO.7 俄罗斯T-90C/S
[ 转自铁血社区 http://bbs.tiexue.net/ ]
火力:俄罗斯人是典型的注重进攻不重防守。125mm大口径火炮火力之凶悍,天下闻名。火炮各项性能均非常优良。俄罗斯人对火控系统不求精良但求实用,采用T-80U的IA45式综合火控系统,配备了带有稳定装置的昼夜瞄准系统和热成像瞄准系统,提高了在夜间或不良天气条件下的作战能力,简单经济。但其火力却不降反升,可靠耐用。
防护:T-90S的装甲防护不算突出,所宣扬的主动防御装甲以及窗帘干扰装置(施托拉-1型光电干扰系统),并没有人们想象的那般出色,但这并不等于说T-90S的防护性能就不怎么样,应对当前西方各国现役主站坦克,T-90S毫不逊色。
机动:虽然和中国ZTZ-99G一样,同是在T-72基础上发展而来,但99G身上已完全见不到T-72的影子了。 而T-90仍然沿用T-72B的底盘和1200马力的动力系统,但因其性能优异,完全附和俄罗斯要求且坦克全重较低,最大公路行驶速度60km/h,所以机动性极佳。而且如同俄罗斯其他武器一样,简单实用,安全可靠,后勤保障便捷,最大行程650km,战略机动能力优秀。因此,T-90S的机动性能评分颇高。
信息化:东方主战坦克的通病,信息化、数字化程度有待提高。
NO.8 日本90式
火力:90式采用的依然是德国莱茵金属公司的44倍口径120MM滑膛炮,虽然性能优良,但在火炮技术迅猛发展的今天,已不显突出。一度领先的先进火控系统也面临落于人后的尴尬境地。
[ 转自铁血社区 http://bbs.tiexue.net/ ]
防护:装甲防护力不足一直是90式的短板,在炮塔设计上,日本人全数接受德国老师的优缺点,其炮塔与车身之间近200mm的窝弹区一直为人所诟病。
机动:日本人身材矮小,相应的90式要比豹IIA4要轻的多,90式拥有1500马力的强劲心脏,尤其以优良的悬挂和传动系统令人称道,因此拥有令人惊叹的战术机动性能。但其致命缺陷在于,日本有着强大的民用工业,而军工基础却相对薄弱和不完善,研发力量有限。90式采用三菱重工的2冲程发动机,虽然功率达到,但油耗和可靠性都非常不理想,再加上独居岛国,四面环海,使90式的战略机动能力让人无法恭维。严重影响了90式的机动性能综合评分。
信息化:及至今天,90式的信息化水平在亚洲还是名列前茅的,只是这一优势还能保持多久,日本人心里比谁都清楚。
NO.9 乌克兰T-84-120克恩
火力:T-84-120是在T-84主战坦克的底盘上发展起来的,主炮采用的北约标准的50倍口径的120mm滑膛炮。这与西方主流采用的44或55倍口径,甚至是52倍口径都不符。比较可信的分析是,这种滑膛炮的确是乌克兰自己设计的,但它明显地采用了西方的技术,在身管设计、炮膛药室的尺寸上向西方靠拢,以便于发射北约的120mm炮弹。该火炮可以发射炮射导弹。
防护:装备有先进的光电自我防护系统,其中包括一个自动发射的防激光探测的气溶剂烟幕弹,以及自动启动一个双红外干扰装置以对付红外跟踪的二代反坦克导弹。估计这套系统是安装在乌克兰T-84坦克上的“窗帘-1”装甲战车防护系统。
[ 转自铁血社区 http://bbs.tiexue.net/ ]
机动:采用了乌克兰设计并制造的6TD-2型6缸、水冷、二冲程、多燃料发动机。最大功率1200马力(2600转/分)。最大公路速度70km/h,越野速度45km/h,倒档的最高速度是34km/h。
信息化:装备有基本通讯设备和定位系统等,但鉴于T-84-120东西合璧带来的混乱,其信息化程度评分非常一般。
NO.10 意大利公羊II
火力:44倍口径的120mm滑膛炮,由奥托梅莱拉公司生产。这种火炮是在德国豹II的RH120型120mm滑膛炮的基础上改进而来的。具有"猎--歼"攻击能力,使它达到近似M1A2火控系统的水平。
防护:车体和炮塔为钢装甲焊接结构,主要部位采用了复合装甲。车内装有三防装置、灭火抑爆装置。总的看来,"公羊"主战坦克的火力、机动性都不错,防护性与最先进的主战坦克相比略有差距。
机动:动力装置为水冷、涡轮增压柴油机,最大功率1100kw。传动装置为德国ZF公司制造的液力机械式变速箱。悬挂装置为液气式。坦克的最大速度为65km/h。0-32km/h的加速时间为6-7s。这说明它的机动性能跟豹II坦克差不多。
[ 转自铁血社区 http://bbs.tiexue.net/ ]
信息化:尽管公羊II的信息化水平比起其他欧美顶级主战坦克略显一般,但差距并不十分明显。另外,在北约机制内,联合军事行动使得各国装甲部队获得信息的能力悬殊不大。
参考资料:http://hi.baidu.com/hezhenghui0639/blog/item/d921e6fb1edc79d8b48f31a8.html
参考技术B 1.世界第一是德国的豹2,这一点地球人都知道,豹2领先的实在太多。2.这种排名对于俄罗斯坦克是不公平的,西方排名对于俄系坦克有较大的排斥,德、俄、美是传统的坦克三杰。俄T90绝对跻身5强并有三甲的实力。
3.您把“阿琼”也列出来,“阿琼”只是试验品,并且已经被印度军方枪毙了,有很大可能会永远从地球上消失,而且性能的低下也是地球人都知道的。
4.您在世界排名部分的第十名,哈立德和88B并列,这很好笑。哈立德就是著名的MBT-2000,说是中巴联合改进,其实就是中国技术在“酋长”式坦克基础上改进的,适应沙漠地形作战,有评论说MBT-2000有媲美俄罗斯T-90S的实力。当初巴基斯坦在85II和88的选择上,毫不犹豫的选择了85II,而96式就是88C。
5.您漏掉了一个独具特色的国家-乌克兰,他们的发动机技术和传动技术世界领先,他们带来的节目是,同样凶悍的T-84。
6.韩国的K1A1,说白了就是一个舶来品,性能超过日本90式和俄罗斯T-90的几率是0%,您太抬举棒子了。
7.您漏掉了美国的M1A1,M1A1虽然比M1A2差点,但是比您榜上的梅卡瓦4、T-72M、阿琼、88B还是要强太多,太多。
8.您既然把正在研制的“阿琼”和试验未列装的风暴II也列了出来,那俄罗斯的“恐怖伊万”--装备了152mm主炮的T95怎么算?还有140mm主炮的“黑鹰”,俄罗斯的坦克研发实力绝对不容小觑。
9.您高估了中国坦克的排名,更有意思的是,您把中国几种型号坦克的排名排在了T-90甚至是豹2的前面,要知道,中国的坦克,用的是2流的德国发动机技术,1流的乌克兰传动和2流的俄罗斯坦克技术,中国连炮射导弹、自动装填、火控等都或多或少使用了俄罗斯技术,甚至中国卖给泰国的坦克,毫无研发能力的泰国人都不断抱怨中国坦克车载无线电技术的严重落后!西方的坦克排名,甚至中国的ZTZ99都不会出现在前10,现在我们认为ZTZ99“强”,主要就是强在他的火力上,其实火控技术和防护力等并不好,差距还是有的,还得加点紧。 参考技术C 全世界最先进的主战坦克主要是美国的M1A2、德国的豹2A5、俄罗斯的T90、以色列的梅卡瓦4、法国的勒克莱尔、南非的号角,还有我们的99G
排名不好排啊。没打过。最好的应该是M1A2和梅卡瓦4,实战检验出来的。 参考技术D 1、美国的M1A1
2、德国的豹2
3、中国的99
还听说中国研制出第四代坦克05坦克可能是世界上最厉害的坦克!!
《游戏学习》JAVA版坦克大战课程设计及源码
1.功能设计
- 游戏要有图形用户界面,界面能够反映游戏所有的细节。
- 界面中要有坦克,墙,树林,河流。
- 界面中要有一个“家”,“家”被攻击中则输了游戏。
- 坦克分两种,敌方和我方。
- 墙也分为两种,可以穿透的普通墙,不可以穿透的铁墙。
- 树和河流均只有一种,树林坦克可以通过。
- 坦克可以发射子弹,敌我方的子弹属性一样。
- 我方子弹可以杀死敌方坦克,敌方子弹也可以杀死我方坦克,但需要多枪子弹才可以杀死。
- 敌方之间不可以杀死对方。
- 子弹击中坦克要有爆炸,但击中墙不能爆炸。
- 我方可以吃血包增加生命。
- 游戏可以暂停,重新开始,游戏帮助等功能。具体如下图:
2.需求分析
- 设计一个图形用户界面,将所有游戏的元素都能在此用于界面上表现出来,界面能够接受用户的操作,具有人机交互功能。用户可以选择重新开始游戏,退出游戏,暂停游戏和查找游戏帮助。
- 界面中包含坦克,树,河流,阻挡墙和游戏用户所要保护的“家”。
- 坦克:坦克分为两种,敌方坦克和用户控制的坦克。用户方和敌方坦克均可以发射子弹,可以改变路径的行走,且在行走过程中遇到墙等阻碍物和游戏边界时要改变方向,而不能一直顶着障碍物不放。坦克之间不能穿越,碰撞到后自动调换方向。
- 树:界面中要包括树林,作为遮掩物体和修饰物体,以便增加游戏的元素,使得游戏更加贴切人性化。树的数目不限,以游戏整体界面清晰美观来决定数目。
- 河流:界面中要包括河流,河流作用与树林相同,同样河流的数目不限,以游戏界面整体美观度来决定数目。
- 墙:墙体分为两种,普通的墙和铁墙,普通的墙在受到子弹袭击时会损坏,而铁墙可以阻碍子弹的穿越。两方的坦克均不能穿越两种墙体,但都可以摧毁普通墙体。普通墙体的数目配合其他元素合理安排,铁墙则不宜过多,不然游戏难度太低甚至因为坦克不能穿越铁墙而使得游戏无法进行下去。
- “家”:用户方除了有一辆自己的坦克外还有一个要保护的家,家由普通墙体包围,家受到子弹攻击后游戏立即结束,用户方则输了本局游戏。
- 子弹:子弹可以由敌方和用户方发射,且发射出去的子弹可以直线移动,直到碰到障碍物就消失,子弹可以穿越树林和河流。敌方坦克受到一颗子弹攻击会爆炸从而导致死亡,死亡后坦克消失。用户方受到子弹攻击后会减少寿命,且受到四次攻击则死亡,此时如还有敌方坦克存在,则用户方输掉本次游戏。
- 爆炸:当子弹射击到坦克身上时,要产生爆炸效果。
- 方向:坦克和子弹都有方向,可以选择上下左右四个方向,且子弹的方向从属于坦克的方向。
3.项目代码结构目录
4.关键代码展示
启动类 TankClient
import java.util.ArrayList;
import java.awt.*;
import java.awt.event.*;
import java.util.List;
import javax.swing.JOptionPane;
public class TankClient extends Frame implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
public static final int Fram_width = 800; // 静态全局窗口大小
public static final int Fram_length = 600;
public static boolean printable = true;
MenuBar jmb = null;
Menu jm1 = null, jm2 = null, jm3 = null, jm4 = null;
MenuItem jmi1 = null, jmi2 = null, jmi3 = null, jmi4 = null, jmi5 = null,
jmi6 = null, jmi7 = null, jmi8 = null, jmi9 = null;
Image screenImage = null;
Tank homeTank = new Tank(300, 560, true, Direction.STOP, this);// 实例化坦克
GetBlood blood = new GetBlood(); // 实例化生命
Home home = new Home(373, 545, this);// 实例化home
List<River> theRiver = new ArrayList<River>();
List<Tank> tanks = new ArrayList<Tank>();
List<BombTank> bombTanks = new ArrayList<BombTank>();
List<Bullets> bullets = new ArrayList<Bullets>();
List<Tree> trees = new ArrayList<Tree>();
List<CommonWall> homeWall = new ArrayList<CommonWall>(); // 实例化对象容器
List<CommonWall> otherWall = new ArrayList<CommonWall>();
List<MetalWall> metalWall = new ArrayList<MetalWall>();
public void update(Graphics g) {
screenImage = this.createImage(Fram_width, Fram_length);
Graphics gps = screenImage.getGraphics();
Color c = gps.getColor();
gps.setColor(Color.GRAY);
gps.fillRect(0, 0, Fram_width, Fram_length);
gps.setColor(c);
framPaint(gps);
g.drawImage(screenImage, 0, 0, null);
}
public void framPaint(Graphics g) {
Color c = g.getColor();
g.setColor(Color.green); // 设置字体显示属性
Font f1 = g.getFont();
g.setFont(new Font("TimesRoman", Font.BOLD, 20));
g.drawString("区域内还有敌方坦克: ", 200, 70);
g.setFont(new Font("TimesRoman", Font.ITALIC, 30));
g.drawString("" + tanks.size(), 400, 70);
g.setFont(new Font("TimesRoman", Font.BOLD, 20));
g.drawString("剩余生命值: ", 500, 70);
g.setFont(new Font("TimesRoman", Font.ITALIC, 30));
g.drawString("" + homeTank.getLife(), 650, 70);
g.setFont(f1);
if (tanks.size() == 0 && home.isLive() && homeTank.isLive()) {
Font f = g.getFont();
g.setFont(new Font("TimesRoman", Font.BOLD, 60)); // 判断是否赢得比赛
this.otherWall.clear();
g.drawString("你赢了! ", 310, 300);
g.setFont(f);
}
if (homeTank.isLive() == false) {
Font f = g.getFont();
g.setFont(new Font("TimesRoman", Font.BOLD, 40));
tanks.clear();
bullets.clear();
g.setFont(f);
}
g.setColor(c);
for (int i = 0; i < theRiver.size(); i++) { // 画出河流
River r = theRiver.get(i);
r.draw(g);
}
for (int i = 0; i < theRiver.size(); i++) {
River r = theRiver.get(i);
homeTank.collideRiver(r);
r.draw(g);
}
home.draw(g); // 画出home
homeTank.draw(g);// 画出自己家的坦克
homeTank.eat(blood);// 充满血--生命值
for (int i = 0; i < bullets.size(); i++) { // 对每一个子弹
Bullets m = bullets.get(i);
m.hitTanks(tanks); // 每一个子弹打到坦克上
m.hitTank(homeTank); // 每一个子弹打到自己家的坦克上时
m.hitHome(); // 每一个子弹打到家里是
for (int j = 0; j < metalWall.size(); j++) { // 每一个子弹打到金属墙上
MetalWall mw = metalWall.get(j);
m.hitWall(mw);
}
for (int j = 0; j < otherWall.size(); j++) {// 每一个子弹打到其他墙上
CommonWall w = otherWall.get(j);
m.hitWall(w);
}
for (int j = 0; j < homeWall.size(); j++) {// 每一个子弹打到家的墙上
CommonWall cw = homeWall.get(j);
m.hitWall(cw);
}
m.draw(g); // 画出效果图
}
for (int i = 0; i < tanks.size(); i++) {
Tank t = tanks.get(i); // 获得键值对的键
for (int j = 0; j < homeWall.size(); j++) {
CommonWall cw = homeWall.get(j);
t.collideWithWall(cw); // 每一个坦克撞到家里的墙时
cw.draw(g);
}
for (int j = 0; j < otherWall.size(); j++) { // 每一个坦克撞到家以外的墙
CommonWall cw = otherWall.get(j);
t.collideWithWall(cw);
cw.draw(g);
}
for (int j = 0; j < metalWall.size(); j++) { // 每一个坦克撞到金属墙
MetalWall mw = metalWall.get(j);
t.collideWithWall(mw);
mw.draw(g);
}
for (int j = 0; j < theRiver.size(); j++) {
River r = theRiver.get(j); // 每一个坦克撞到河流时
t.collideRiver(r);
r.draw(g);
// t.draw(g);
}
t.collideWithTanks(tanks); // 撞到自己的人
t.collideHome(home);
t.draw(g);
}
blood.draw(g);
for (int i = 0; i < trees.size(); i++) { // 画出trees
Tree tr = trees.get(i);
tr.draw(g);
}
for (int i = 0; i < bombTanks.size(); i++) { // 画出爆炸效果
BombTank bt = bombTanks.get(i);
bt.draw(g);
}
for (int i = 0; i < otherWall.size(); i++) { // 画出otherWall
CommonWall cw = otherWall.get(i);
cw.draw(g);
}
for (int i = 0; i < metalWall.size(); i++) { // 画出metalWall
MetalWall mw = metalWall.get(i);
mw.draw(g);
}
homeTank.collideWithTanks(tanks);
homeTank.collideHome(home);
for (int i = 0; i < metalWall.size(); i++) {// 撞到金属墙
MetalWall w = metalWall.get(i);
homeTank.collideWithWall(w);
w.draw(g);
}
for (int i = 0; i < otherWall.size(); i++) {
CommonWall cw = otherWall.get(i);
homeTank.collideWithWall(cw);
cw.draw(g);
}
for (int i = 0; i < homeWall.size(); i++) { // 家里的坦克撞到自己家
CommonWall w = homeWall.get(i);
homeTank.collideWithWall(w);
w.draw(g);
}
}
public TankClient() {
// printable = false;
// 创建菜单及菜单选项
jmb = new MenuBar();
jm1 = new Menu("游戏");
jm2 = new Menu("暂停/继续");
jm3 = new Menu("帮助");
jm4 = new Menu("游戏级别");
jm1.setFont(new Font("TimesRoman", Font.BOLD, 15));// 设置菜单显示的字体
jm2.setFont(new Font("TimesRoman", Font.BOLD, 15));// 设置菜单显示的字体
jm3.setFont(new Font("TimesRoman", Font.BOLD, 15));// 设置菜单显示的字体
jm4.setFont(new Font("TimesRoman", Font.BOLD, 15));// 设置菜单显示的字体
jmi1 = new MenuItem("开始新游戏");
jmi2 = new MenuItem("退出");
jmi3 = new MenuItem("暂停");
jmi4 = new MenuItem("继续");
jmi5 = new MenuItem("游戏说明");
jmi6 = new MenuItem("级别1");
jmi7 = new MenuItem("级别2");
jmi8 = new MenuItem("级别3");
jmi9 = new MenuItem("级别4");
jmi1.setFont(new Font("TimesRoman", Font.BOLD, 15));
jmi2.setFont(new Font("TimesRoman", Font.BOLD, 15));
jmi3.setFont(new Font("TimesRoman", Font.BOLD, 15));
jmi4.setFont(new Font("TimesRoman", Font.BOLD, 15));
jmi5.setFont(new Font("TimesRoman", Font.BOLD, 15));
jm1.add(jmi1);
jm1.add(jmi2);
jm2.add(jmi3);
jm2.add(jmi4);
jm3.add(jmi5);
jm4.add(jmi6);
jm4.add(jmi7);
jm4.add(jmi8);
jm4.add(jmi9);
jmb.add(jm1);
jmb.add(jm2);
jmb.add(jm4);
jmb.add(jm3);
jmi1.addActionListener(this);
jmi1.setActionCommand("NewGame");
jmi2.addActionListener(this);
jmi2.setActionCommand("Exit");
jmi3.addActionListener(this);
jmi3.setActionCommand("Stop");
jmi4.addActionListener(this);
jmi4.setActionCommand("Continue");
jmi5.addActionListener(this);
jmi5.setActionCommand("help");
jmi6.addActionListener(this);
jmi6.setActionCommand("level1");
jmi7.addActionListener(this);
jmi7.setActionCommand("level2");
jmi8.addActionListener(this);
jmi8.setActionCommand("level3");
jmi9.addActionListener(this);
jmi9.setActionCommand("level4");
this.setMenuBar(jmb);// 菜单Bar放到JFrame上
this.setVisible(true);
for (int i = 0; i < 10; i++) { // 家的格局
if (i < 4)
homeWall.add(new CommonWall(350, 580 - 21 * i, this));
else if (i < 7)
homeWall.add(new CommonWall(372 + 22 * (i - 4), 517, this));
else
homeWall.add(new CommonWall(416, 538 + (i - 7) * 21, this));
}
for (int i = 0; i < 32; i++) {
if (i < 16) {
otherWall.add(new CommonWall(220 + 20 * i, 300, this)); // 普通墙布局
otherWall.add(new CommonWall(500 + 20 * i, 180, this));
otherWall.add(new CommonWall(200, 400 + 20 * i, this));
otherWall.add(new CommonWall(500, 400 + 20 * i, this));
} else if (i < 32) {
otherWall.add(new CommonWall(220 + 20 * (i - 16), 320, this));
otherWall.add(new CommonWall(500 + 20 * (i - 16), 220, this));
otherWall.add(new CommonWall(220, 400 + 20 * (i - 16), this));
otherWall.add(new CommonWall(520, 400 + 20 * (i - 16), this));
}
}
for (int i = 0; i < 20; i++) { // 金属墙布局
if (i < 10) {
metalWall.add(new MetalWall(140 + 30 * i, 150, this));
metalWall.add(new MetalWall(600, 400 + 20 * (i), this));
} else if (i < 20)
metalWall.add(new MetalWall(140 + 30 * (i - 10), 180, this));
else
metalWall.add(new MetalWall(500 + 30 * (i - 10), 160, this));
}
for (int i = 0; i < 4; i++) { // 树的布局
if (i < 4) {
trees.add(new Tree(0 + 30 * i, 360, this));
trees.add(new Tree(220 + 30 * i, 360, this));
trees.add(new Tree(440 + 30 * i, 360, this));
trees.add(new Tree(660 + 30 * i, 360, this));
}
}
theRiver.add(new River(85, 100, this));
for (int i = 0; i < 20; i++) { // 初始化20辆坦克
if (i < 9) // 设置坦克出现的位置
tanks.add(new Tank(150 + 70 * i, 40, false, Direction.D, this));
else if (i < 15)
tanks.add(new Tank(700, 140 + 50 * (i - 6), false, Direction.D,
this));
else
tanks
.add(new Tank(10, 50 * (i - 12), false, Direction.D,
this));
}
this.setSize(Fram_width, Fram_length); // 设置界面大小
this.setLocation(280, 50); // 设置界面出现的位置
this.setTitle("坦克大战——(重新开始:R键 开火:F键) ");
this.addWindowListener(new WindowAdapter() { // 窗口监听关闭
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
this.setResizable(false);
this.setBackground(Color.GREEN);
this.setVisible(true);
this.addKeyListener(new KeyMonitor());// 键盘监听
new Thread(new PaintThread()).start(); // 线程启动
}
public static void main(String[] args) {
new TankClient(); // 实例化
}
private class PaintThread implements Runnable {
public void run() {
// TODO Auto-generated method stub
while (printable) {
repaint();
try {
Thread.sleep(50);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
private class KeyMonitor extends KeyAdapter {
public void keyReleased(KeyEvent e) { // 监听键盘释放
homeTank.keyReleased(e);
}
public void keyPressed(KeyEvent e) { // 监听键盘按下
homeTank.keyPressed(e);
}
}
public void actionPerformed(ActionEvent e) {
if (e.getActionCommand().equals("NewGame")) {
printable = false;
Object[] options = { "确定", "取消" };
int response = JOptionPane.showOptionDialog(this, "您确认要开始新游戏!", "",
JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (response == 0) {
printable = true;
this.dispose();
new TankClient();
} else {
printable = true;
new Thread(new PaintThread()).start(); // 线程启动
}
} else if (e.getActionCommand().endsWith("Stop")) {
printable = false;
// try {
// Thread.sleep(10000);
//
// } catch (InterruptedException e1) {
// // TODO Auto-generated catch block
// e1.printStackTrace();
// }
} else if (e.getActionCommand().equals("Continue")) {
if (!printable) {
printable = true;
new Thread(new PaintThread()).start(); // 线程启动
}
// System.out.println("继续");
} else if (e.getActionCommand().equals("Exit")) {
printable = false;
Object[] options = { "确定", "取消" };
int response = JOptionPane.showOptionDialog(this, "您确认要退出吗", "",
JOptionPane.YES_OPTION, JOptionPane.QUESTION_MESSAGE, null,
options, options[0]);
if (response == 0) {
System.out.println("退出");
System.exit(0);
} else {
printable = true;
new Thread(new PaintThread()).start(); // 线程启动
}
} else if (e.getActionCommand().equals("help")) {
printable = false;
JOptionPane.showMessageDialog(null, "用→ ← ↑ ↓控制方向,F键盘发射,R重新开始!",
"提示!", JOptionPane.INFORMATION_MESSAGE);
this.setVisible(true);
printable = true;
new Thread(new PaintThread()).start(); // 线程启动
} else if (e.getActionCommand().equals("level1")) {
Tank.count = 12;
Tank.speedX = 6;
Tank.speedY = 6;
Bullets.speedX = 10;
Bullets.speedY = 10;
this.dispose();
new TankClient();
} else if (e.getActionCommand().equals("level2")) {
Tank.count = 12;
Tank.speedX = 10;
Tank.speedY = 10;
Bullets.speedX = 12;
Bullets.speedY = 12;
this.dispose();
new TankClient();
} else if (e.getActionCommand().equals("level3")) {
Tank.count = 20;
Tank.speedX = 14;
Tank.speedY = 14;
Bullets.speedX = 16;
Bullets.speedY = 16;
this.dispose();
new TankClient();
} else if (e.getActionCommand().equals("level4")) {
Tank.count = 20;
Tank.speedX = 16;
Tank.speedY = 16;
Bullets.speedX = 18;
Bullets.speedY = 18;
this.dispose();
new TankClient();
}
}
}
5. 游戏运行截图
坦克大战(Java版本)课程设计文档
https://download.csdn.net/download/weixin_40986713/21531925
坦克大战(Java版本)源码
以上是关于国庆阅兵的99式坦克与世界主战坦克比较及主战坦克排名(详细介绍)的主要内容,如果未能解决你的问题,请参考以下文章