// draw N-by-N percolation system public static void draw(Percolation perc, int N) { StdDraw.clear(); StdDraw.setPenColor(StdDraw.BLACK); StdDraw.setXscale(0, N); StdDraw.setYscale(0, N); StdDraw.filledSquare(N / 2.0, N / 2.0, N / 2.0); // draw N-by-N grid int opened = 0; for (int row = 1; row <= N; row++) { for (int col = 1; col <= N; col++) { if (perc.isFull(row, col)) StdDraw.setPenColor(StdDraw.BOOK_LIGHT_BLUE); else if (perc.isOpen(row, col)) StdDraw.setPenColor(StdDraw.WHITE); else StdDraw.setPenColor(StdDraw.BLACK); StdDraw.filledSquare(col - 0.5, N - row + 0.5, 0.45); if (perc.isOpen(row, col)) opened++; } } // write status text StdDraw.setFont(new Font("SansSerif", Font.PLAIN, 12)); StdDraw.setPenColor(StdDraw.BLACK); StdDraw.text(.25 * N, -N * .025, opened + " open sites"); if (perc.percolates()) StdDraw.text(.75 * N, -N * .025, "percolates"); else StdDraw.text(.75 * N, -N * .025, "does not percolate"); }
// 游戏结束时的显示信息 public void endInfo() { StdDraw.setPenColor(StdDraw.MAGENTA); StdDraw.setFont(font1); if (getShit) StdDraw.text(100, 182, "你踩到了猫屎!"); else if (cat.escaped()) StdDraw.text(100, 182, "你竟然让猫跑了!"); else StdDraw.text(100, 182, "你用了 " + count + " 步抓住了猫!"); StdDraw.show(); }
// 描绘当前场景 public void show(int t) { StdDraw.clear(); StdDraw.setFont(font1); for (int i = 0; i < 9; i++) { for (int j = 0; j < 9; j++) { if (board[i][j] <= 0) StdDraw.setPenColor(StdDraw.LIGHT_GRAY); else StdDraw.setPenColor(StdDraw.ORANGE); StdDraw.filledCircle(getX(i, j), getY(i), 10); // 画格子 if (board[i][j] == 20) drawShit(getX(i, j), getY(i)); // 画猫屎 else if (board[i][j] > 0 && board[i][j] < 10) { // 填数字 StdDraw.setPenColor(StdDraw.RED); StdDraw.text(getX(i, j), getY(i) - 2, String.valueOf(board[i][j])); } } } drawCat(getX(cat.getPos() / 9, cat.getPos() % 9), getY(cat.getPos() / 9)); // 画猫 StdDraw.setFont(font2); StdDraw.setPenColor(StdDraw.ORANGE); StdDraw.text(175, 195, "已用:" + count + " 步"); // 右上角步数统计 StdDraw.show(t); // 延时 }
protected static void showGround() { for (int i = 0; i < myRect.size(); i++) { myRect.get(i).show(); if (i % 2 == 0) { myRect.get(i).contactBottom(); // contactBottom avec le sol } // else { // myRect.get(i).contactTop();// contactTop avec le haut // } if (myRect.get(0).getXGround() > 7000) { StdDraw.setPenColor(Color.BLACK); StdDraw.setFont(new Font("Dialog", Font.PLAIN, 20)); StdDraw.text(Constants.X_MAX / 2, Constants.Y_MAX / 2, "Player vs player"); } } }
// Draw one gem with given coordinates. void draw(double x, double y) { switch (type) { case BLUE: StdDraw.picture(x, y, "gem_blue.png"); break; case GREEN: StdDraw.picture(x, y, "gem_green.png"); break; case ORANGE: StdDraw.picture(x, y, "gem_orange.png"); break; } StdDraw.setFont(new Font("SansSerif", Font.BOLD, 14)); StdDraw.setPenColor(StdDraw.WHITE); StdDraw.text(x, y, "" + points); }
public static void main(String[] args) { // GUI Variables int width = 1024; int height = 256; int pauseTime = 0; Font typeFont = new Font("Consolas", 1, 24); Font sentenceFont = new Font("Consolas", 0, 16); boolean multipleWords = false; // Strings for typing word, prediction, and sentence. StringBuilder typeString = new StringBuilder(); String prediction; StringBuilder sentence = new StringBuilder(); // Set up window StdDraw.setCanvasSize(width, height); StdDraw.setXscale(0.0, (double) width); StdDraw.setYscale(0.0, (double) height); // Train on files. WordPredictor predictor; if (args.length > 0) { try { int number = Integer.parseInt(args[args.length - 1]); if (number > 0 && number <= 9) { predictor = new WordPredictor(number); multipleWords = true; } else { predictor = new WordPredictor(); } } catch (NumberFormatException e) { predictor = new WordPredictor(); predictor.train(args[args.length - 1]); } for (int i = 0; i < args.length - 1; i++) { predictor.train(args[i]); } predictor.build(); } else { predictor = new WordPredictor(); } // Main loop for GUI and typing. while (true) { // Clear screen and reset variables. StdDraw.clear(); ArrayList<Word> best = null; if (predictor.getBest(typeString.toString()) != null) { best = predictor.getBest(typeString.toString()).getList(); } // If next key has been typed then act. if (StdDraw.hasNextKeyTyped()) { char key = StdDraw.nextKeyTyped(); // If key is a-z or apostrophe add it to string. if ((key >= 'a' && key <= 'z') || key == '\'') { typeString.append(key); } else if (key == ' ') { // If space move word to sentence, train into dict and reset if (typeString.length() > 0) { sentence.append(typeString + " "); predictor.trainWord(typeString.toString()); predictor.build(); typeString = null; typeString = new StringBuilder(); } } else if (key == '\b') { // Remove last letter if possible. if (typeString.length() > 0) { typeString.deleteCharAt(typeString.length() - 1); } } else if (key == '\n') { if (best != null) { // If enter was pressed and there is a prediction // Use the prediction and reset current word. sentence.append(best.get(0).getWord() + " "); typeString = null; typeString = new StringBuilder(); predictor.trainWord(best.get(0).getWord()); predictor.build(); } } else if (multipleWords) { // If there are multiple words available listen for numbers // These will allow for adding from suggestions. if (key >= '1' && key <= '9' && best != null) { int predNum = Integer.parseInt(key + ""); if (best.size() >= predNum) { sentence.append(best.get(predNum - 1).getWord() + " "); typeString = null; typeString = new StringBuilder(); predictor.trainWord(best.get(predNum - 1).getWord()); predictor.build(); } } } } // Start redrawing onto screen. // Typed word set up and print. StdDraw.setPenColor(Color.BLACK); StdDraw.setFont(typeFont); StdDraw.text(width / 2, height / 4 * 3, typeString.toString()); // Show prediction if it exists. if (best != null) { StdDraw.setPenColor(Color.BLUE); for (int i = 0; i < best.size(); i++) { StdDraw.text( width * ((i + .5) / best.size()), height / 2 + typeFont.getSize() / 2, best.get(i).getWord()); if (multipleWords) { StdDraw.text( width * ((i + .5) / best.size()), height / 2 - typeFont.getSize() / 2, "" + (i + 1)); } } StdDraw.setPenColor(Color.BLACK); } // Print out the sentence. StdDraw.setFont(sentenceFont); StdDraw.textRight(width - 20, height / 4, sentence.toString()); // Pause the loop based on time set at beginning. Set to 0. StdDraw.show(pauseTime); } }