【Java】网络打字对战小游戏

//以下代码均出自于清华大学出版社(郭克华老师版java教材)的第二十五章练习章节

//以下为自己的对代码的理解和记录

一、网络打字小游戏

网络打字小游戏需要实现的功能:

     运行服务器端,之后运行客户端,可实现多个用户随机进入和退出,进入之后出现登录界面,输入用户名,若连接成功,显示连接成功界面。之后进入游戏界面。

游戏规则为26个大写字母从上端每0.1秒向下坠落,从键盘键入此字母,若正确则自己加一分,其余在线用户减一分,若输入错误或者错过输入时间,则自己减一分。


二、分析

 大致思路:建立三个.java。客户端、服务器端、游戏面板类。

服务器端:
  (1).首先每个客户进入服务器的时间是不可以确定的,所以需要一个总的线程来等待每个客户的连入。
  (2).同时,每个客户对服务器的输入输出也是一个线程的问题,所以还需要为每一个客户创建一个线程。为了方便操作,我们同时申请一个
      变长数组来保存每个连入服务器的客户端。

  (3).并且,客户端之间的通信也是通过这个变长的数组来实现的。

于是就形成了,当一个客户成功连入服务器之后,服务器在总的线程上为此用户创建一个子线程,也就是2中的线程数组。此子线程中,需要实现客户端与服务器的通信,所以将总线程接收的套接字给子线程,并实现输入输出流的连接。也就是说,当一个客户需要与另一个客户实现通信时,都需要通过主线程的套接字来实现,这样更加的方便。

游戏界面端:

   此界面需要考虑的方面是游戏界面的形成(字母的下落以及键盘的键入)和生命值的修改(自己的修改以及自身行为对其他用户生命值的影响)以及判断结束的函数。

  (1)游戏界面上关于字母随机的从顶上下落,于是将字符设置成Label的形式,设置下落的起始位置的函数为:

setBounds(rnd.nextInt(this.getWidth()),0, 20, 20);//此函数是起始位置是横坐标随机,纵坐标从0,组件大小为20,20。

之后利用Timer类结合ActionListener的操作函数来实现含字母的移动标签随着时间的推移下落。同时利用Key监听器来实现判断是否操作正确。

  (2)在实现移动时,首先判断用户是否已经错过此字母,若错过,则自己减1。当键入时,如果匹配,则自己加2,给服务器减一(服务器将会使得所有子线程用户减1,则此用户正确是加1),否则自己减1。且为了接收服务器给的其他用户的-1,则需要创建线程,因为随时可能有-1的时候。

    (3)判断游

评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值