示例#1
0
  public void run() {
    StdDraw.setCanvasSize(512, 512);
    StdDraw.setScale(0, 100);
    Bird flappy = new Bird();
    long upThen = System.currentTimeMillis() / 10;
    int score = 0;

    boolean running = true;
    while (running) {
      // Þarf að bæta við pixlum efst í bakgrunninn
      StdDraw.show(5);
      StdDraw.picture(50, 30, "../Myndir/background.jpg", 110 * 1.6, 110);
      //////////////////////////////////////////

      flappy.draw();

      //////////////////
      // Takkaskipanir
      //////////////////

      // Hömlur á það hversu oft má ýta á up með vissu tímabili
      if (StdDraw.isKeyPressed(38))
        flappy.up(System.currentTimeMillis() / 10); // Er verið að ýta á upp örvalykil?
      if (StdDraw.isKeyPressed(27)) close(); // Er verið að ýta á Escape?

      //////////////
      // Stigagjöf
      //////////////

      //////////////////////////////////////////
      StdDraw.show();
    }
  }
  public static void main(String[] args) {

    // check for optional command-line argument that turns on animation
    int delay = -1;
    if (args.length > 0) delay = Integer.parseInt(args[0]);

    // get dimensions
    int w = StdIn.readInt();
    int h = StdIn.readInt();
    StdDraw.setCanvasSize(w, h);
    StdDraw.setXscale(0, w);
    StdDraw.setYscale(0, h);

    // turn on animation mode
    StdDraw.show(0);

    // run smallest insertion heuristic
    Tour tour = new Tour();
    while (!StdIn.isEmpty()) {
      double x = StdIn.readDouble();
      double y = StdIn.readDouble();
      Point p = new Point(x, y);
      tour.insertSmallest(p);

      if (delay > -1) {
        StdDraw.clear();
        tour.draw();
        StdDraw.text(100, 0, "" + tour.distance());
        StdDraw.show(delay);
      }
    }

    // draw to standard draw
    tour.draw();
    StdDraw.show(0);

    // print tour to standard output
    System.out.println("Tour distance = " + tour.distance());
    tour.show();
  }
示例#3
0
 protected static void initGame() {
   StdDraw.clear();
   StdDraw.setCanvasSize(Constants.X_VIEW, Constants.Y_VIEW);
   StdDraw.setXscale(0, Constants.X_MAX);
   StdDraw.setYscale(0, Constants.Y_MAX);
 }
示例#4
0
  public NFADemo(String regexp) {
    // use stack to keep track of the positions of '('and '|'
    // issue : or的优先级最低
    Stack<Integer> ops = new Stack<Integer>();
    re = regexp.toCharArray();
    M = re.length;
    G = new Digraph(M + 1);

    // 第一次遍历,确定层次,仅为作图用
    int[] levels = new int[M]; // levels仅在 * 和 | 处非零
    for (int i = 0; i < M; i++) {
      int lp = i;
      if (re[i] == '(' || re[i] == '|') ops.push(i);
      else if (re[i] == ')') {
        int or = ops.pop();
        if (re[or] == '|') {
          lp = ops.pop();
          levels[or] = maxOfArr(levels, lp, i) + 1;
        } else lp = or;
      }
      if (i < M - 1 && re[i + 1] == '*') levels[i + 1] = maxOfArr(levels, lp, i + 1) + 1;
    }
    int maxLevel = maxOfArr(levels, 0, M);

    StdDraw.setCanvasSize(800, 800 * 2 * maxLevel / M);
    StdDraw.setXscale(0, M);
    StdDraw.setYscale(-maxLevel, maxLevel);

    double r = 0.2;
    for (int v = 0; v < G.V(); v++) {
      if (v < M) {
        StdDraw.circle((double) v, 0.0, r);
        StdDraw.text((double) v, 0.0, (new Character(re[v]).toString()));
      } else StdDraw.filledCircle((double) v, 0.0, r);
    }

    StdDraw.setPenColor(StdDraw.RED);
    StdDraw.setPenRadius(0.005);
    ops = new Stack<Integer>();
    for (int i = 0; i < M; i++) {
      int lp = i;
      if (re[i] == '(' || re[i] == '|') ops.push(i);
      else if (re[i] == ')') {
        int or = ops.pop();
        if (re[or] == '|') {
          lp = ops.pop();
          G.addEdge(lp, or + 1);
          G.addEdge(or, i);

          // connect (lp, or+1), (or, i)
          double level = (double) levels[or];
          StdDraw.line(or, r, or, level);
          StdDraw.line(or, level, i, level);
          StdDraw.arrow(i, level, i, r);
          StdDraw.line(lp, -r, lp, -level);
          StdDraw.line(lp, -level, or + 1, -level);
          StdDraw.filledArrow(or + 1, -level, or + 1, -r);
        } else lp = or; // 此时是'(', 在后面跟的是*时会用到
      }
      if (i < M - 1 && re[i + 1] == '*') {
        // look ahead
        G.addEdge(lp, i + 1);
        G.addEdge(i + 1, lp);

        // connect (lp, i+1), (i+1, lp)
        double level = (double) levels[i + 1];
        StdDraw.line(i + 1, r, i + 1, level);
        StdDraw.line(i + 1, level, lp, level);
        StdDraw.filledArrow(lp, level, lp, r);
        StdDraw.line(lp, -r, lp, -level);
        StdDraw.line(lp, -level, i + 1, -level);
        StdDraw.filledArrow(i + 1, -level, i + 1, -r);
      }
      if (re[i] == '(' || re[i] == '*' || re[i] == ')') {
        G.addEdge(i, i + 1);
        StdDraw.filledArrow(i + r, 0.0, i + 1 - r, 0.0);
      } else if (re[i] != '|') { // match transitions
        StdDraw.setPenColor();
        StdDraw.filledArrow(i + r, 0.0, i + 1 - r, 0.0);
        StdDraw.setPenColor(StdDraw.RED);
      }
    }
  }
  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);
    }
  }