// 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");
  }
示例#2
0
 // 游戏结束时的显示信息
 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();
 }
示例#3
0
 // 描绘当前场景
 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); // 延时
 }
示例#4
0
 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);
    }
  }