java写游戏脚本(编程一个最简单游戏代码)

在Java中,如何用Swing实现打字游戏.需要掌握多线程,JFrame的创建方法。多线程的创建方法,一个是继承Thread类,一个是实现Runnable接口。框架的实现,直接创建一个类继承JFrame.基本思路是,1.创建一个JFrame2.

在 Java 中,如何用Swing实现打字游戏.需要掌握多线程,JFrame的创建方法。多线程的创建方法,一个是继承Thread类,一个是实现Runnable接口。框架的实现,直接创建一个类继承JFrame.

基本思路是,1.创建一个JFrame 2.启动十个线程,每个线程携带了一个JLabel,用到了随机函数,每个JLabel的刚出现的时候,他们的y坐标都是一样的,x坐标是随机的(随机范围在JFrame的宽度内.JLabel显示的值,是Ascii对应的拉丁字母 .3.线程控制每个JLael的y坐标增加,这样字母就在往下掉 4.响应键盘事件

//载入包

import java.awt.*;

import javax.swing.*;

import java.util.*;

import java.awt.event.*;

import java.applet.*;

// 创建一个线程

class MyThread extends Thread {

int height=0;

// JLabel的x坐标

int intx=0;

// JLabel 的y坐标

int inty=0;

static int com=0;

JLabel lb1;

public MyThread(ThreadGroup g,String name,int width,int fheight){

this.setName(name);

height=fheight;

// 设置JLabel显示的大写字母,通过随机值控制.65是大写A的Ascii值

lb1=new JLabel(“”+(char)(int)(Math.random()*26+65));

// 设置JLabel的背景颜色,红,绿,蓝组成自然界所有色彩

lb1.setForeground(new Color((int)(Math.random()*250),(int)(Math.random()*250),(int)(Math.random()*250)));

intx=(int)(Math.random()*(width-20));

//线程启动

start();

}

public void run(){

try{

while(true){

//睡眠50毫秒往下掉

sleep((int)(Math.random()*50));

lb1.setBounds(intx,inty,15,15);

//改变y坐标

inty++;

if(inty>=(height-20)){

lb1.show(false);

MyThread.com++;

break;

}

}

}catch(Exception e){}

}

}

//创建窗口

class TestKey extends JFrame

{

JButton b1,b2;

static int index=0;

Container conent=getContentPane();

static int idd=0;

static int count=0;

int ixx;

static ThreadGroup dg = new ThreadGroup(“group1”);

static ThreadGroup dg1;

static MyThread t1;

Thread list[];

public TestKey() throws ArrayStoreException

{

setSize(400,600);

b1=new JButton(“开始”);

b2=new JButton(“结束”);

conent.setLayout(null);

b1.setBounds(getWidth()/2-100,getHeight()-70,80,30);

b2.setBounds(getWidth()/2+50,getHeight()-70,80,30);

conent.add(b1);

conent.add(b2);

conent.setBackground(Color.blue);

Container cont=getContentPane();

conent.setBackground(Color.white);

show();

//响应按钮事件

b1.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent even)

{

for(int i=0;i<10;i++)

{

t1 =new MyThread(dg,”t”+i,getWidth(),getHeight());

getContentPane().add(t1.lb1);

}

}

});

b2.addActionListener(new ActionListener()

{

public void actionPerformed(ActionEvent even)

{

int num=conent.getComponentCount()-2;

for(int i=2;i<num+2;i++)

{

conent.remove(2);

conent.repaint();

}

if((float)num/count<=0.02)

JOptionPane.showMessageDialog(null,”共有”+count+”个字母n”+”只有”+num+”个未打掉!n您真是高手,佩服,佩服!”);

else if((float)num/count<=0.15)

JOptionPane.showMessageDialog(null,”共有”+count+”个字母n”+”有”+num+”个未打掉!n水平不错,继续努力吧!”);

else if((float)num/count<=0.3)

JOptionPane.showMessageDialog(null,”共有”+count+”个字母n”+”有”+num+”个未打掉!n您很有潜力,不要虚度光阴哦!”);

else if((float)num/count<=0.4)

JOptionPane.showMessageDialog(null,”共有”+count+”个字母n”+”有”+num+”个未打掉!n挺危险的,加把劲啊!”);

else

JOptionPane.showMessageDialog(null,”共有”+count+”个字母n”+”有”+num+”个未打掉!n不蛮你,你真的很差劲,抓紧练习吧!”);

}

});

//监听窗口事件

addWindowListener(new WindowAdapter()

{

public void windowClosing(WindowEvent event)

{

if(conent.getComponentCount()==2)

JOptionPane.showMessageDialog(null,”您真的要退出吗?n记得经常来练习啊!”);

else

JOptionPane.showMessageDialog(null,”您确定要退出吗?n我还没为您评分的啊!”);

System.exit(0);

}

});

b1.addKeyListener(new KeyAdapter()

{

public void keyTyped(KeyEvent event)

{

list = new Thread[dg.getParent().activeCount()];

int count = dg.getParent().enumerate(list);

for(int i=0;i<list.length;i++)

{

try

{

MyThread mt=null;

mt = (MyThread)(list[i]);// instanceof MyThread)

if(event.getKeyChar()== mt.lb1.getText().charAt(0))

{

mt.lb1.setVisible(false);

MyThread hh=new MyThread(dg,”t”+i,getWidth(),getHeight());

getContentPane().add(hh.lb1);

}

}catch(Exception e){}

}

}

});

}

public static void main(String args[]){

TestKey mf=new TestKey();

Container cont=mf.getContentPane();

cont.setBackground(Color.white);

cont.setLayout(null);

//创建十个线程,携带十个字母往下掉

for(int i=0;i<10;i++)

{

t1 =new MyThread(dg,”t”+i,mf.getWidth(),mf.getHeight());

cont.add(t1.lb1);

}

}

}

java写游戏脚本(编程一个最简单游戏代码)

大家有不同的实现方式,欢迎在下面留言

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/45052.html

(0)
nan
上一篇 2021-11-13
下一篇 2021-11-13

相关推荐

  • 新规民间借贷合法利息(借钱利息怎么算)

    对于贷款来说,贷款是需要计算利息的,对于贷款的一个利息来说,不同贷款的一个利息的计算公式是不一样的,例如说按揭贷款和信用贷款相应的一个计算公式就不一样,同样的我们在计算贷款利息的时候,也需要根据计算公式去计算。接下来由法律快车小编为大家带来

    2021-12-12
    0
  • Couchbase支持跨数据中心复制吗

    是的,Couchbase提供了跨数据中心复制功能,允许将数据从一个数据中心复制到另一个数据中心,从而实现数据的分布式复制和高可用性。这个功能可以帮助用户在多个地理位置进行数据复制,以确保数据的持久性和可靠性。Cross Datacenter Replication (XDCR)是Couchbase提供的一种实现数据同步的机制,可以满足不同数据中心之间数据同步的需求。

    2024-03-18
    0
  • 手机骁龙cpu排名天梯图(骁龙和天玑处理器对比)

    高通骁龙处理器性能排行榜依次是:高通骁龙865Plus、高通骁龙865、高通骁龙855Plus、高通骁龙855、骁龙845。其中最强的高通骁龙865Plus基于台积电7nm工艺制程打造,骁龙865Plus是美国高通公司于2020年7月发布的一款移动处

    2021-10-12
    0
  • c#字符串拼接要注意哪些事项

    在C#中进行字符串拼接时,需要注意以下几点:使用字符串连接操作符 (+):可以将多个字符串连接起来。例如:string result = string1 + string2 + string3;使用String.Concat方法:该方法可以将多个字符串连接起来。例如:string result = String.Concat(string1, string2, string3);使用String.

    2024-02-04
    0
  • 购买幻兽帕鲁服务器如何配置

    购买幻兽帕鲁服务器的配置因公司和个人需求不同而有所差异,但一般来说,以下是一些基本的配置建议:处理器:选择高性能的多核心处理器,例如英特尔Xeon或AMD Ryzen系列。内存:至少16GB的内存,以应对多任务处理和运行大型游戏时的需求。存储:选择高速固态硬盘(SSD)作为系统盘,以提供更快的读写速度。此外,还可以考虑添加额外的机械硬盘(HDD)作为数据存储盘。显卡:选择适合游戏的高性能显卡

    2024-01-26
    0
  • 域名和网址的区别是什么(域名和网址是什么关系)

    域名和网址的区别是什么,域名和网址是什么关系内容导航:域名与网址有什么区别域名和网址的区别网络域名和网址的区别有哪些网址和域名的区别是什么一、域名与网址有什么区别域名与网址区别如下:1、二者包含的范围不同域名和网址是包含与被包含的关系,域名包含于网址中,也可以这样理解,网址里面含有域名。2、二者后缀部分不同域名只是网址的后缀部分而已。打开一张浏览器网页

    2022-04-28
    0

发表回复

登录后才能评论