日常二:
关于之前单词练习程序的更新
之前程序显示是在console(控制台)里运行的,现在可以单独出来,在文本框中实现运行
新增功能
- 计时功能: 因为个人技术问题,还不能将计时功能加入到文本框中将其实现,可能这将在之后更新,或不更新;
- 积分功能: 在文本框中显示出当前积分(支持负数),当然,积分的增减值可以在程序中修改;
- 错误计数功能: 在文本框中对错误次数进行统计,当错误到一定次数,程序将停止;
源码
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.util.Random;
public class Words extends Frame{
/**
* @throws InterruptedException
*
*/
public static void main(String[] args) throws InterruptedException {
new Words().start();
//实现计时
for (int time = 0; time < 1800; time++) {
Thread.sleep(1000);
System.out.println("时间进行了:"+time);
if(time == 1200) {
System.exit(0);
}
}
}
private static final long serialVersionUID = 1L;
String a[] = {
// "ActionListener","Console","final","input","Collection",
// "Runnable","Prefrences","implements","KeyPressed","LinkedList","mybatis"
"public","static","void","main","Scanner","double","int","short","long",
"boolean","float","byte","Random","String","class","else","equals",
"TextField","ActionListener","MouseListener","KeyListener","System","exit",
"equals","Font","File",
"TextArea","Console","Library","Context","session","Factory",
"private","final","clear","close","Array","protected","return","workspace","input","Object",
"NullpointerException","value","OutOfBounds","Collection",
"Runnable","database","FileWriter",
"Runtime","Color","calc","shutdown","notepad","execute","Exception","throws","catch","package",
"View","Prefrences","InputStream","OutputStream","Socket","path","BufferedImage","extends",
"implements","abstract","image","Interface","Application","Frame","KeyEvent","KeyPressed","Servlet",
"Controller","ArrayList","LinkedList",
"create","table","insert","delete","select","update",
"sprintMVC","mybatis","spring"
};
String b[] = {
// "事件监听","控制台","不可更改的","输入","集合",
// "可执行接口","属性","实现","键盘按下去","Linked数组","持久框架层"
"公开的","静态","返回值","主方法","输入机器人","双精度","整形","短整形","长整形",
"布尔型","单精度","比特","随机机器人","字符串","类","其他","相等",
"文本框","事件监听","鼠标监听","键盘监听","系统","退出",
"相同","字体","文件",
"文本域","控制台","jar包存放位","上下文","会话","工厂",
"私有的","不可更改的","清空","关闭","数组","半公开的","返回","工作空间","输入","java程序老大",
"空指针","值","越界","集合",
"可执行接口","数据库","文件写入器",
"运行","颜色","计算器","关机命令","记事本","执行","异常","抛(异常)","捕获(异常)","包",
"视图","属性","输入流","输出流","网络客户端","路径","图片(缓冲格式)","继承",
"实现","抽象","图片(普通格式)","接口","应用","界面","键盘适配信息","键盘按下去","后端Servlet编程",
"控制器","Array数组","Linked数组",
"创建","表格","添加","删除","查询","修改",
"显示框架层","持久框架层","业务层框架"
};
int count = 0;
int cuo = 0;
Random rd = new Random(); //随机产生
// int i = 0; //遍历产生
int i = rd.nextInt(a.length);
TextField tf = new TextField(); //设置文本框
public void start() {
addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
setSize(800,800); //设置窗口大小
setVisible(true); //显示窗口
setLayout(null); //取消默认布局
tf.setBounds(270,350,300,45); //设置文本框的位置
add(tf);
Font f = new Font("杨",28,28); //新建字体
tf.setFont(f);
tf.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
if(count>=200) {
System.out.println("成功!");
System.exit(0); //程序结束
}
if(cuo>=5) {
System.out.println("菜鸡!你错了5次");
System.exit(0); //程序结束
}
// if(i>=a.length-1) i = 0; //遍历中,遍历到最后返回第一个单词
String s1 = tf.getText(); //获取用户输入的文字
if(s1.equals(a[i])) {
// i++; //遍历数组
i = rd.nextInt(a.length); //随机数组
repaint(); //重画,刷新
tf.setText(null); //清空文本框
count++;
} else {
count-=10;
cuo++;
repaint(); //重画,刷新
tf.setText(null); //清空文本框
}
}
});
}
public void paint(Graphics g) {
Font f = new Font("杨",32,32); //新建字体
g.setFont(f);
//设置判断,当前100时显示中文,当100后不显示中文
if(count <= 0) {
g.drawString(a[i]+"--"+b[i], 300, 250); //撰写文字
//
} else {
g.drawString(b[i], 300, 250); //撰写文字
}
g.drawString("当前分数:"+count, 500, 100); //积分
g.drawString("你 错 了 :"+cuo+"次", 500, 135);
Font t = new Font("杨",22,22); //新建字体
g.setFont(t);
g.drawString(">提示< 当前规则为写对得1分,写错扣10分,500分满分", 50, 700);
}
}