📄 wanderthread.java
字号:
/* * WanderThread.java Beta 1.0 08/04 * * Copyright 2007 Grassoft. All rights reserved. */package wanderer;import javax.swing.*;import javax.swing.table.*;/** * * 继承Thread类,该线程完成漫游分析的主要工作。 */public class WanderThread extends Thread { private BugMove move; private BugTracer bug; public static Map map; private int Times; private int Conter; private int Widt; private int Heig; private int SumPace; private int SumTime; private long Timer; private DefaultTableModel AnaTableModel; private DefaultTableModel StaTableModel; public WanderThread(int WLen, int WWid ,int WTimes, DefaultTableModel WAnaTable, DefaultTableModel WStaTable) { Widt = WLen; Heig = WWid; map = new Map(Widt,Heig);//每次实验开始前实例化map //单次实验漫游次数 Times = WTimes; //“分析”表格 AnaTableModel = WAnaTable; //“统计”表格 StaTableModel = WStaTable; //单次实验总步数及总时间 SumPace = 0; SumTime = 0; }//构造方法 @Override public void run() { //每次实验前清空“分析表格” Wanderer.CleanTable(AnaTableModel); for (int i = 1; i <= Times; i++) { //调用漫游方法Wander,i为漫游序号 Wander(i); } //实验结束,打印“统计”表格 PrintSta(); } //Wander为实现单次漫游方法 private void Wander(int i) { initAnalyser(); //计时器开始计时 Timer = System.currentTimeMillis() ; while (true) { //实例化随机前进方向 move = new BugMove(); //处理边缘问题 if ((bug.x == 0 && move.x == -1) || (bug.x == Widt - 1 && move.x == 1) || (bug.y == 0 && move.y == -1) || (bug.y == Heig - 1 && move.y == 1)) { continue; } bug.x += move.x; bug.y += move.y; bug.pace++; if (map.locat[bug.x][bug.y] == 0) { Conter++;//记录已漫游格数 } map.locat[bug.x][bug.y]++; if (Conter == map.sum - 1 || bug.pace >= 500000000) { //计时结束 Timer = System.currentTimeMillis() - Timer; //打印“分析”表格,单次漫游结果 PrintTable(String.valueOf(i), String.valueOf(bug.pace), "(" + String.valueOf(map.begin[0]) + "," + String.valueOf(map.begin[1]) + ")", "(" + String.valueOf(bug.x) + "," + String.valueOf(bug.y) + ")", String.valueOf(Timer) + "ms", AnaTableModel); SumTime += Timer; SumPace += bug.pace; //单次漫游结束 break; } } } //每次漫游前初始化 private void initAnalyser() { Timer = (long) 0; Conter = 0; map.Init(); bug = new BugTracer(); bug.x = map.begin[0]; bug.y = map.begin[1]; } //打印“统计”表格 private void PrintSta() { //打印实验序号Expr String c1 = String.valueOf(Wanderer.Expr); String c2 = String.valueOf(Times); String c3 = String.valueOf(Widt) + "x" + String.valueOf(Heig); String c4 = String.valueOf((int) (SumPace / Times)); String c5 = String.valueOf((long) (SumTime / Times)) + "ms"; PrintTable(c1, c2, c3, c4, c5, StaTableModel); Wanderer.Expr++;//实验序号加1 } //打印窗口方法 private void PrintTable(String c1,String c2,String c3,String c4,String c5,DefaultTableModel Table) { String rowData[] = {c1, c2, c3, c4, c5}; try { Table.addRow(rowData); } catch (Exception e) { e.printStackTrace(); } }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -