小人を並べますよ
シンプルに座標を変えて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);
}
}
}
}