项目总结

项目总结

1、马里奥项目

首先小编来介绍一下游戏的基本功能

1、人物向左向右行走(键盘监听)

2、人物跳跃

3、人物发射子弹

4、人物检测和障碍物之间的碰撞

5、背景图片的移动

三、游戏大致实现思路:

1.窗体

2.自己角色的添加

3.背景图片的添加

4.背景图片的移动

5.人物的移动和跳跃

6.砖头、水管等等障碍物的添加

7.任务和障碍物的碰撞

难点分析:

1.人物的多键控制

1)给人物设定方向boolean变量:向左、向右、向上、向下

2)通过键盘监听来修改方向的变量值

按下某个键的时候,我们把相应方向改为true,释放的时候改false

2.地图配置

自定义文件读取方式实现:文件流的使用和字符串String类的方法调用

3.碰撞检测

封装一个Rectangle类的对象

4.子弹添加

1)先定义一个容器,这个用于封装所有的子弹对象

2)按下某个键的时候,创建一个子弹对象(以角色的坐标为基准初始化)

3)把子弹对象添加到容器当中

4)在paint方法中,遍历容器,取出子弹对象并进行绘制

5)检测子弹如果超出了窗体边界,则需要把当前子弹从容器当中移除掉

四、程序源代码:

代码结构图:分了三个包、敌人类包、游戏界面类包、游戏地图配置包
每款游戏都有它特定的地图,地图都很炫酷,首先通过文件输入流将文件数据读入,将字符转换为数字,并存储在二维数组中,后面,通过遍历二维数组的不同位置的值,在相应的格子填充相应的障碍物;地图就这样配置好了;当游戏人物在窗体走的时候,觉得一直是人在走,其实,人物走到中间或者走到某一位置的时候,人物已经是在原地踏步了,取而代之的是背后那张长度很长的背景的图片在移动,任务的左右移动相对而言比较简答实现,跳跃功能就不是那么简单了,需要永达线程,跟后面障碍物碰撞检测又有关系,当没有碰到的时候,人物要往下掉,一不注意就会出现各种bug,比如,可以一直跳,在跳的同时还能再跳,还有就是下降可能不会落地面的同一高度,可能会高于地面的高度,可能会低于地面的高度;障碍物的添加,我们是通过配置地图的方式,配置地图有时通过读入文件的操作,大致的原理是将后面的那张的背景图片划分成很多的小格子,将这些小格子用代码转换为二位数组,二维数组可以存入不同数字,代表不同的障碍物,通过操作文件就可以轻易配置地图;

链接: https://www.write-bug.com/article/1284.html.

2、个人博客管理

在这里插入图片描述

使用基于 Token 的身份验证方法,在服务端不需要存储用户的登录记录。大概的流程是
这样的:

  1. 客户端使用用户名跟密码请求登录
  2. 服务端收到请求,去验证用户名与密码
  3. 验证成功后,服务端会签发一个 Token,再把这个 Token 发送给客户端
  4. 客户端收到 Token 以后可以把它存储起来,比如放在 Cookie 里
  5. 客户端每次向服务端请求资源的时候需要带着服务端签发的 Token
  6. 服务端收到请求,然后去验证客户端请求里面带着的 Token,如果验证成功,就向
    客户端返回请求的数据

Token Auth的优点
Token机制相对于Cookie机制又有什么好处呢?
支持跨域访问: Cookie是不允许垮域访问的,这一点对Token机制是不存在的,前提
是传输的用户认证信息通过HTTP头传输.
无状态(也称:服务端可扩展行):Token机制在服务端不需要存储session信息,因为
Token 自身包含了所有登录用户的信息,只需要在客户端的cookie或本地介质存储
状态信息.

基于JWT的Token认证机制实现
JSON Web Token(JWT)是一个非常轻巧的规范。这个规范允许我们使用JWT在用户和服务器之间传递安全可靠的信息。

一个JWT实际上就是一个字符串,它由三部分组成,头部、载荷与签名。
头部(Header)
头部用于描述关于该JWT的最基本的信息,例如其类型以及签名所用的算法等。这也可以
被表示成一个JSON对象。
载荷(playload)
载荷就是存放有效信息的地方
签证(signature)
jwt的第三部分是一个签证信息,这个签证信息由三部分组成:
header (base64后的)
payload (base64后的)
secret
这个部分需要base64加密后的header和base64加密后的payload使用.连接组成的字符
串,然后通过header中声明的加密方式进行加盐secret组合加密,然后就构成了jwt的第
三部分。
将这三部分用.连接成一个完整的字符串,构成了最终的jwt:
secret是保存在服务器端的,jwt的签发生成也是在服务器端的,secret就是用
来进行jwt的签发和jwt的验证,所以,它就是你服务端的私钥,在任何场景都不应该流
露出去。一旦客户端得知这个secret, 那就意味着客户端是可以自我签发jwt了。

如上图所示,经过拦截器后通过request请求向里面添加属性claims,将用户数据添加进来,然后进入方法后就可以直接拿到用户数据从而确定是哪个用户登录的,即使在多系统情况下,采用同样的逻辑一样是可以解析的,从而实现单点登录;

在上述代码中还有一个问题是:生成的token在有效期内无法被销毁,那么就会存在一个安全问题,即用户多次登录生成多个token,但是前面生成的token还是处于有效状态,无法被及时销毁;鉴于这点,可以采用Redis缓存来解决这个问题,并且还可以实现多个系统共享Redis数据从而保证在在同一时间内只有一个有效的token;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值