代码:
package com.ssc.demo.client;
import java.util.List;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Grid;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.ssc.demo.shared.Epoch;
import com.ssc.demo.shared.Room;
import com.ssc.demo.shared.Room.Position;
public class GeneticDemo implements EntryPoint {
private Grid roomView = new Grid(Room.HEIGHT, Room.WIDTH);
void clearPath(){
for(int row=0; row<Room.HEIGHT; ++row){
for(int col=0; col<Room.WIDTH; ++col){
Block b = (Block)roomView.getWidget(row, col);
if(b.isPath){
b.clear();
}
}
}
}
void showPath(List<Position> path){
int i=0;
for(Position p : path){
Block b = (Block)roomView.getWidget(p.y, p.x);
b.setPathIndex(i++);
}
}
public void onModuleLoad() {
for(int row=0; row<Room.HEIGHT; ++row){
for(int col=0; col<Room.WIDTH; ++col){
int value = Room.room[row][col];
roomView.setWidget(row, col, new Block(value));
}
}
Button btnStart = new Button("Run");
btnStart.addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
clearPath();
showPath(Epoch.findPath());
}
});
VerticalPanel vPanel = new VerticalP