栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

JAVA小游戏之打字母

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

JAVA小游戏之打字母

import javax.swing.*;
import java.awt.*;


public class ChatGameDemo {
    public static void main(String[] args) {
        //创建窗口
        JFrame frame = new JFrame();
        //创建绘制容器
        CharPanel panel = new CharPanel();
        frame.setBounds(100,100,375,675);
        frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
        frame.add(panel);
        frame.setBackground(Color.BLACK);
        panel.setBackground(Color.BLACK);


        //键盘事件
        frame.addKeyListener(panel);
        panel.addKeyListener(panel);

        Thread thread = new Thread(panel);
        thread.start();
        frame.setVisible(true);
    }
}
import javax.swing.*;
import java.awt.*;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.ImageObserver;
import java.text.AttributedCharacterIterator;

public class CharPanel extends Panel implements Runnable, KeyListener {

    // 字母坐标系
    int [] x = new int[10];
    int [] y = new int[10];

    //字母
    char[] chars = new char[10];

    //字母颜色 rgb格式 0-255
    int[] r = new int[255];
    int[] g = new int[255];
    int[] b = new int[255];

    // 分数
    int score = 100;

    public CharPanel() {

        //随机生成字母
        for (int i = 0; i < 10; i++) {
            x[i] = (int) (Math.random() * 300);
            y[i] = (int) (Math.random() * 600);

            chars[i] = (char) (Math.random() * 26 + 97);

            r[i] = (int) (Math.random() * 255);
            g[i] = (int) (Math.random() * 255);
            b[i] = (int) (Math.random() * 255);

        }
    }

    @Override
    public void paint(Graphics graphics) {
        super.paint(graphics);
        Font font1 = new Font("",Font.BOLD,20);
        graphics.setFont(font1);
        graphics.setColor(Color.red);
        if (score < 0){
            graphics.drawString("游戏结束",100,100);
            return ;
        }
        //绘制分数
        graphics.drawString("得分 :" + score,10,20);
        //绘制字母
        Font font2 = new Font("",Font.BOLD,25);
        graphics.setFont(font2);
        for (int i = 0; i < 10; i++) {
            graphics.setColor(new Color(r[i],g[i],b[i]));
            graphics.drawString(""+chars[i],x[i],y[i]);
        }

    }

    //监听键盘
    @Override
    public void keyTyped(KeyEvent e) {

    }

    @Override
    public void keyPressed(KeyEvent e) {
        //对所有的按键都有唯一的键盘码
        //新的坐标
        int ny = -1;
        int index = -1;
        for (int i = 0; i < 10; i++) {
            if(e.getKeyChar() == chars[i]){
                if(ny < y[i]){
                    ny = y[i];
                    index = i;
                }
            }
        }
        if(index > -1){
            y[index] = 0;
            x[index] = (int) (Math.random() * 300);
            chars[index] = (char) (Math.random() * 26 +  97);
            score += 10;
        }
    }

    @Override
    public void keyReleased(KeyEvent e) {

    }

    @Override
    public void run() {
        while(true){
            for (int i = 0; i < 10; i++) {
                y[i] += 5;
                if(y[i] > 500){
                    y[i] = 0;
                    score -= 10;
                }
            }
            try {
                Thread.sleep(100);
            } catch (InterruptedException e) {
                throw new RuntimeException(e);
            }
            repaint();
        }
    }
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/946613.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号