坦克大战--Java类型
写在前面
Java编译器下载教程(真的良心):https://blog.csdn.net/Haidaiya/article/details/81230636
本项目为本人独自制作,请各位尊重我的努力成果谢谢。同时,这个项目中也存在一些问题,请见谅。
本项目需要启动服务器,在类Server中启动主函数,随后启动类Main中的main方法即可开始运行,服务器的地址默认为本地,如需修改,请在类Client中进行修改,谢谢。
本项目中的图片音乐均来自网络,请不要用于商用(说起来我也不知道是否可以),仅用于学习和自己本地玩就好,否则,后果自负。
文件源码和图片在博客最后面
项目要求

项目制作思路
(1)为了实现图形界面,我们需要学习一波JFrame(画框),JPanel(画布 ), JButton(按钮)等等.....具体请参考我的另一篇博客
(2)自定义按键,嗯,学习一波KeyListener,为了能够使用JButton(按钮)进行各种操作,学习一波ActionListener;同时,为了能够让用户更好的自定义按键,采用JComboBox(多选框)进行选择,学习一波嗯。
(3)计时器,嗯,多线程
(4)联系移动,嗯,这个设置为,每次点击移动键后,将坦克位置移动相同距离就好了
(5)障碍物,嗯,为了更好的游戏体验,我用了7天试用期的PS CC 完成了所有图片制作,不得不说,PS是个好东西。图片都是网上找,然后用PS进行修改。同时,为了可以判断坦克和坦克之间、坦克和墙之间、子弹和墙、坦克之间的碰撞,专门用了一个Jduge类来判断各种碰撞,同时也进行坦克移动的判断。
(6)AI坦克,嗯,偷了个懒,我用的是随机数,让坦克往一个方向一段一段距离,期间每隔一段时间,射出炮弹,同时遇到墙或者坦克就换一个方向继续行走。
(7)服务器,嗯,学习一波socket
扩展内容
(1)作为一个游戏,怎么能没有好的background和background music呢,为此使用了PS CC进行背景处理,又学习了一个剪辑音乐的软件,说起来,我这个剪辑音乐的软件真心不错,还可以剪辑视频呢,微软商城找的,名字是剪影,轻度广告,而且你一般看不到(只在导出文件的时候弹出,而且不会挡住屏幕,比某剪辑良心不少)
(2)然后,障碍物、子弹、坦克的图片也很重要,为此,借助了PS CC 和百度的强大,完成了这方面的制作。
(3)由于一般的游戏不止有一个地图,为了制作多个地图,我利用excel进行构建地图(说起来,这个还真是好用)
(4)对于音乐,我们需要学习一波URI , URL ,AudioClip等等,具体内容请百度或者看我的另一篇博客。我的音乐可能不让各位满意,如需更改,请在类Music进行修改。
(5)之后,在项目完成的前几天,我觉得gif是个好东西,为此又下了一个软件进行gif制作.....说到gif,我有觉得,如果可以实现点击图片,然后.....(不剧透,因为也就那么回事)
(6)为了增加游戏体验,我为部分墙壁增加了奖励物品,包括加速,伤害增加,加血等等,其中在第三关,我增加了随机生成岩浆的功能,就是因为这个功能,我自己都很少过关(微笑)。本来最开始的时候想过进行坦克升级的,后来做完了后忘记了,现在因为没有PS了,所以就放弃了,哎,PS是个好东西呀!
(7)然后呢,似乎没得写了耶,最后的扩展就是........(永远不可能停止更新的游戏,“只要你肯加”)。
游戏截图




写在最后
这个项目我也是写了比较久的,这篇文章是个综述,游戏的源码也放在这里,之后会写几篇博客,分开讲解整个程序。算是作为Java学习的总结了。
文件源码(包括图片)
下载链接:https://pan.baidu.com/s/1j-FDcvwuLST6hr8my2F3QA
提取码:qwdz
二维码:
坦克大战--Java类型的更多相关文章
- 坦克大战--Java类型 ---- (2)按键设置和用户名的输入
		
一.实现思路(emmmm,这个地方我很大程度参照了别人的写法) 由于键盘按键众多,因此使用选择框JComboBox 进行按键选择,点击一个JButton 按钮后,读取所有选择框中的内容,然后存到一 ...
 - 坦克大战--Java类型 ---- (3)实现socket通信
		
一.实现思路 使用socket通信的一些方法来实现socket通信,客户端和服务端两边需要约定好通信的接口Port(尽量选高的),客户端需要服务端的IP地址,以实现数据交流. 同时,客户端和服务端需要 ...
 - 坦克大战--Java类型 ---- (1)音乐播放
		
实现原理 我用接口java.applet.AudioClip实现音乐播放,那么我们需要了解这个接口的情况. 我们主要使用其中的三个方法: (1)void loop(); //循环播放(2)void p ...
 - 坦克大战java版
		
吃了可以加血的血块类 import java.awt.*; public class Blood { //血块移动的路径 int[][] pos = { {450,250},{450,252},{45 ...
 - java制作简单的坦克大战
		
坦克大战是我们小时候玩红白机时代的经典游戏,看到有不少小伙伴都使用各种语言实现了一下,手痒痒,也使用java做的一个比较简单的坦克大战,主要面向于学过Java的人群,与学了一段时间的人,有利于面向对象 ...
 - Java小项目--坦克大战(version1.0)
		
Java小项目--坦克大战<TankWar1.0> 这个小项目主要是练习j2se的基础内容和面向对象的思想.项目实现了基本的简单功能,我方一辆坦克,用上下左右键控制移动方向,按F键为发射炮 ...
 - Java坦克大战(四)
		
这是我的坦克游戏大战的最后一版,里面添加很多新的功能.这个坦克大战的有很多不足之处,但是对于初学者来说依然是一个很好的练习项目,从中我们可以学习Java基础知识,将知识与项目结合,学习面向对象编程思想 ...
 - Java坦克大战(三)
		
关于这个坦克大战的项目是在学习Java基础的时候,拿来练习的最近看到这些代码,感觉很亲切,就把他们都复制下来,编辑成博客.回首看去,Java基础的学习确实应该建立在找项目练习上,这样才能将学到的基础知 ...
 - Java坦克大战(二)
		
本文紧接上一篇讲解坦克大战这个项目,因为当初在学习的时候,是以这个案例逐步学习Java基础的,过程是先讲知识点,再将知识点逐步的融入到项目中,即给坦克添加新的功能.之前的Demo练习,想都记录下来.这 ...
 
随机推荐
- element-ui中el-table表格的使用(如何取到当前列的所有数据)
			
基本使用都不多说了, 我们知道这个表格组件,每个单元格内容是table绑定的data中的某个属性决定的,但是如果我们想根据这个属性值,渲染出另一个值呢,首先问题来了,我如何获得当前列的值, 查了查,我 ...
 - 百度地图API根据地名获取经纬度
			
运用了Geocoding API,它包括地址解析和逆地址解析功能. 地址解析是指,由详细到街道的结构化地址得到百度经纬度信息,且支持名胜古迹.标志性建筑名称直接解析返回百度经纬度.例如:“北京市海淀区 ...
 - MySQL优化:如何避免回表查询?什么是索引覆盖? (转)
			
数据库表结构: create table user ( id int primary key, name varchar(20), sex varchar(5), index(name) )engin ...
 - 使用 docker 部署 typecho 的 nginx 配置文件
			
savokiss.com.conf server { listen ssl http2 reuseport; server_name savokiss.com www.savokiss.com; ro ...
 - Django 配置实用bootstrap
			
1.下载bootstrap代码包. 2.在目录下创建static文件夹,将bootstrap文件夹移动到static文件夹内,编辑settings.py: 最后添加如下(文件末尾): STATIC_U ...
 - udp如何实现可靠性传输?
			
版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[+] 1udp与tcp的区别 TCP(TransmissionControl Protocol 传输控制协议)是一种面向连接的 ...
 - java批量修改指定目录下的文件名
			
package io; import java.io.File; import java.io.IOException; /** * @Auther: Code * @Date: 2018/9/9 1 ...
 - Qt编写数据可视化大屏界面电子看板12-数据库采集
			
一.前言 数据采集是整个数据可视化大屏界面电子看板系统核心功能,没有数据源,这仅仅是个玩具UI,没啥用,当然默认做了定时器模拟数据,产生随机数据,这个可以直接配置文件修改来选择采用何种数据采集方法,总 ...
 - JAVA 基础编程练习题36 【程序 36 移动位置】
			
36 [程序 36 移动位置] 题目:有 n 个整数,使其前面各数顺序向后移 m 个位置,最后 m 个数变成最前面的 m 个数 package cskaoyan; public class cskao ...
 - CPU 上下文切换及案例分析
			
什么是CPU 上下文 我们都知道,Linux是一个多任务操作系统,它远支持大于CPU数量的任务同时运行,当然,这些任务实际上并不是真的在同时运行,而是因为系统在很短时间内,将CPU轮流分配给他们,造成 ...