打字游戏之暂停与结束

目录及源码链接https://blog.csdn.net/coolyuan/article/details/107169180

实现方法:

暂停功能

本人的目标是实现输入空格时数字暂停下落并且屏幕显示出暂停的字样。
实现方法:

引入一个Boolean类型变量terminateflag来判断当前游戏是否处于暂停状态

新建一个Boolean类型变量terminateflag来判断当前游戏是否处于暂停状态。我们需要在输入框的键盘监听器中的方法实现该功能,在KeyPressed中加入如下代码来实现修改terminateflag。

 if (e.getKeyChar() == KeyEvent.VK_SPACE) {//判断输入是否为空格
                            if (terminateflag) {
                                terminateflag = false;
                            } else {
                                terminateflag = true;
                            }
                        }

暂停功能的细节完善:
本人在KeyReleased中添加代码实现如下功能
①清除输入框中按下暂停产生的空格

String s = in.getText().replaceAll(" ", "");
                        in.setText(s);

②要记得防止暂停中还可以继续输入的情况,我们引入输入任意字符自动修改terminateflag为false功能(同时要记得排除输入空格的情况,因为我们在上面已经实现了按下空格实现暂停,如果这边不排除空格,按下空格将terminaflag置为true,释放空格键后该变量再次修改为false,那么暂停功能就无法实现了)

if(terminateflag==true&&e.getKeyChar()!=KeyEvent.VK_SPACE){
                            terminateflag = false;
                        }

利用terminateflag来实现下落暂停

只需要在游戏下落面板类中的paint方法中新建一个判断terminateflag的语句,如果terminateflag为true就在指定位置绘出字样(如暂停中。。。)来表示暂停,并且不修改各个数字字符的纵坐标,当terminateflag为false时,表示游戏仍在继续,此时将每个数字字符的纵坐标都加1,下次重绘数字就会继续下落了。

 if (terminateflag) {//画出暂停字样
                            g.setColor(Color.BLUE);
                            g.setFont(new Font("宋体", Font.BOLD, 30));
                            g.drawString("暂停中...", width / 4, height / 2);
                            g.setFont(new Font("宋体", Font.BOLD, 20));
                            g.drawString("输入任意数字继续...", width / 4, height / 2 + 30);
                            /*闪烁功能的实现,后期再说*/
                            if (shanshuoflag) {
                                zantingshanshuoflag = true;
                            }

                        } else {//不暂停,每次数字纵坐标加一,掉落到底部生命值减一,重置所有数字纵坐标。
                            for (int i = 0; i < N; i++) {
                                y[i] = y[i] + 1;
                                if (y[i] > getHeight()&&templife>0) {
                                    templife--;
                                    for(int j=0;j<N;j++){
                                        y[j]=50;
                                    }
                                }
                            }
                            if(templife==0){//游戏结束
                                Gameoverflag=true;
                            }
                        }


游戏结束功能

本人建了一个Gameoverflag来判断游戏是否结束,方法跟上面类似。只要记得当生命值为0时将Gameoverflag置为true就行。

if (Gameoverflag) {
                    g.setColor(Color.RED);
                    g.setFont(new Font("宋体", Font.BOLD, 35));
                    g.drawString("游戏结束!", width / 3, height / 2);
                    g.drawString("您的分数为"+score,width / 3-15,height/2+35);
                    gameoverwork();
                } 

细节补充:当游戏结束后,记得将输入框清空并置为不可输入。

 public void gameoverwork(){
                in.setText("");
                in.setEditable(false);
            }
  • 4
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值