忍者ブログ

からすまる日誌 java

応用(8) こびとの画像を並べる その2

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

応用(8) こびとの画像を並べる その2

小人を並べますよ
 
シンプルに座標を変えて3匹並べよう
 
--->Exe13.java
 
package application;
import javafx. application.Application;
import javafx. scene.Group;
import javafx. scene.Scene;
import javafx. scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;//import文のこれがなかったのでエラーが出た
import javafx.scene.paint.Color;
import javafx. stage.Stage;
public class EXE13 extends Application {
 public static void main(String[] args) {
   launch(args);
 }
 @Override
 public void start(Stage myStage) {
  Group root=new Group();
  Canvas canvas = new Canvas(300,300);
  GraphicsContext gc = canvas.getGraphicsContext2D();
  myDraw(gc);
  root.getChildren().add(canvas);
  Scene scene = new Scene(root,300,300,Color.GREEN);
  myStage.setTitle("Exe12");
  myStage.setScene(scene);
  myStage.show();
 }
 private void myDraw(GraphicsContext gc) {
  Image myImg1 = new Image("kobito1.gif");
  gc.drawImage(myImg1, 0, 0);//1ぴきめ
  gc.drawImage(myImg1, 20, 0);//2匹め
  gc.drawImage(myImg1, 40, 0);//3匹め
 }
}
 
一番下の方の3行でX座標をかえて3匹出している。
 

じゃあ10人並べましょう。for文を使いますよ。
 
--->Exe14.java
 
package application;
import javafx. application.Application;
import javafx. scene.Group;
import javafx. scene.Scene;
import javafx. scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;
import javafx.scene.paint.Color;
import javafx. stage.Stage;
public class EXE14 extends Application {
 public static void main(String[] args) {
   launch(args);
 }
 @Override
 public void start(Stage myStage) {
  Group root=new Group();
  Canvas canvas = new Canvas(300,300);
  GraphicsContext gc = canvas.getGraphicsContext2D();
  myDraw(gc);
  root.getChildren().add(canvas);
  Scene scene = new Scene(root,300,300,Color.GREEN);
  myStage.setTitle("Exe12");
  myStage.setScene(scene);
  myStage.show();
 }
 private void myDraw(GraphicsContext gc) {
  Image myImg1 = new Image("kobito1.gif");
  /*
  //最初にやったやり方。外にグローバルで変数を置きそれを操作
  //これがちょっとまずいのは、初期化がちょいちょい入る点
  //入らないほうがよろしいと思う
  int imgX = 0;//画像の座標
  int imgY = 0;
  //横に並べる
  for (int i=0; i<10; i++) {
   gc.drawImage(myImg1, imgX, imgY);
   imgX += 20;
  }
  imgX = 0;//初期化
  //縦に並べる
  for (int i=0; i<10; i++) {
   gc.drawImage(myImg1, imgX, imgY);
   imgY += 20;
  }
  imgX = 0;//初期化
  imgY = 0;//初期化
  //ななめに並べる
  for (int i=0; i<10; i++) {
   gc.drawImage(myImg1, imgX, imgY);
   imgX += 20;
   imgY += 20;
  }
   */
  //横に並べる
  for (int x=0; x<200; x+=20) {
   gc.drawImage(myImg1, x, 0);
  }
  //縦に並べる
  for (int y=0; y<200; y+=20) {
   gc.drawImage(myImg1, 0, y);
  }
  //斜め
  for (int x=0; x<200; x+=20) {
   gc.drawImage(myImg1, x, x);
  }
 }
}
 
先生のコード
  for (int i=0; i<10; i++) {
   gc.drawImage(myImg1, i*20, i*20);
  }
 

じゃあこびとの色違いの画像が3つあるので、色違いのこびとを並べてみましょう。
 
ポイントは2つ
 
色違いの小人もインスタンス化しておく
②for文でまわす
③3でわりきれるかどうかで分岐される
 
ポイント3つだった。
 
--->Exe15.java
 
package application;
import javafx. application.Application;
import javafx. scene.Group;
import javafx. scene.Scene;
import javafx. scene.canvas.Canvas;
import javafx.scene.canvas.GraphicsContext;
import javafx.scene.image.Image;//import文のこれがなかったのでエラーが出た
import javafx.scene.paint.Color;
import javafx. stage.Stage;
public class EXE15 extends Application {
 public static void main(String[] args) {
   launch(args);
 }
 @Override
 public void start(Stage myStage) {
  Group root=new Group();
  Canvas canvas = new Canvas(300,300);
  GraphicsContext gc = canvas.getGraphicsContext2D();
  myDraw(gc);
  root.getChildren().add(canvas);
  Scene scene = new Scene(root,300,300,Color.GREEN);
  myStage.setTitle("Exe12");
  myStage.setScene(scene);
  myStage.show();
 }
 private void myDraw(GraphicsContext gc) {
  Image myImg1 = new Image("kobito1.gif");
  Image myImg2 = new Image("kobito2.gif");
  Image myImg3 = new Image("kobito3.gif");
  //横に交互に並べる
  for (int i=0; i<10; i++) {
   if(i%3 == 0) {
    gc.drawImage(myImg1, i*20, 0);
   }else if(i%3 == 1){
    gc.drawImage(myImg2, i*20, 0);
   }else {
    gc.drawImage(myImg3, i*20, 0);
   }
  }
 }
}
 

 
PR

コメント

ブログ内検索

P R