Em chào mọi người, đợt vừa rồi em có nghỉ mất 1 buổi học Java phần GUI do tiêm vaccine mà prof em lại không record nên chỉ có thể đọc slide.
Bài này là assignment của em, em có đọc theo các notes đã ghi lại để làm nhưng vẫn có 1 số vấn đề. Hi vọng các anh chị có thể cho em gợi ý để em tiếp tục làm bài của mình.
Hôm trước anh @SITUVN.gcd có chỉ em 1 số phần về class thì em có đọc để làm.
Đối với bài 4
Nội dung đã giải quyết được: Đã khai báo width, height; tạo method moveTo(), và constructor.
Nội dung chưa giải quyết được: Em chưa hiểu yêu cầu của center() method lắm, tức là ở đây em sẽ nhận giá trị (x,y), sau đó chọn điểm (525, 425) là giao điểm hai đường chéo hay sao ạ?
Đối với bài 5
- Như em đọc trong sách thì sẽ sử dụng kiểu super.
- Em có test thử là sẽ tạo 1 biến side, sau đó gán vào theo dạng super(side, side), nhưng đề hình như yêu cầu không cần tạo biến hay bất cứ method nào
Đối với bài 6
- Hiện tại em vẫn còn đang mò cách giải quyết nên vẫn chưa xong. Tạm thời em đang ráng xử lý hai bài trên, em cảm ơn anh chị rất nhiều ạ.
Các file code
- File Quadrilateral.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package drawingquad;
import java.awt.Graphics;
import java.util.Random;
/**
*
* @author Hani
*/
public class Quadrilateral
{
Point[] points = new Point[4];
//No-arg constructor
Quadrilateral()
{
this.points[0] = new Point(random(50, 400), random(150, 300));
this.points[1] = new Point(random(600, 1000), random(150, 300));
this.points[2] = new Point(random(600, 1000), random(400, 650));
this.points[3] = new Point(random(50, 400), random(400, 650));
}
//Random method
private int random(int min, int max)
{
Random rdm = new Random();
int num = rdm.nextInt(max + 1 - min) + min;
return num;
}
//draw() method
public void draw(Graphics g)
{
// use g.drawLine(x1, y1, x2, y2)
for(int i = 0; i < 4; i ++)
{
if(i == 3)
{
g.drawLine(points[3].getX(), points[3].getY(), points[0].getX(), points[0].getY());
continue;
}
g.drawLine(points[i].getX(), points[i].getY(), points[i + 1].getX(), points[i + 1].getY());
}
}
}
- File Rectangle.java
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package drawingquad;
/**
*
* @author admin
*/
public class Rectangle extends Quadrilateral
{
private int width;
private int height;
//Constructor
Rectangle(int width, int height)
{
this.width = width;
this.height = height;
}
//moveTo() method
private void moveTo(int x, int y)
{
super.points[0] = new Point(x, y); // Upper-left corner
super.points[1] = new Point(x + width, y); //Upper-right corner
super.points[2] = new Point(x, y - height); //Lower left-corner
super.points[3] = new Point(x + width, y - height); // Lower-right corner
}
//center() method
}
- File Square
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package drawingquad;
/**
*
* @author admin
*/
public class Square
{
}
Em cập nhật hướng đi bài số 4 cho method center()
Cập nhật code triển khai cho bài 4
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
package drawingquad;
/**
*
* @author admin
*/
public class Rectangle extends Quadrilateral
{
private int width;
private int height;
//Constructor
Rectangle(int width, int height)
{
this.width = width;
this.height = height;
center();
}
//moveTo() method
private void moveTo(int x, int y)
{
super.points[0] = new Point(x, y); // Upper-left corner
super.points[1] = new Point(x + width, y); //Upper-right corner
super.points[2] = new Point(x, y - height); //Lower left-corner
super.points[3] = new Point(x + width, y - height); // Lower-right corner
}
//center() method
private void center()
{
int x = 525 - (this.width / 2);
int y = 425 - (this.height / 2);
moveTo(x, y);
}
}