こんにちはすべて私は私が修正できないように見えるこの問題を抱えています。私はいくつかのコードを与えられており、「三目並べ」ゲームを作成する必要があります。かなり原始的です。現時点では、ユーザー入力を取得し(マーカーを配置する行/列を要求するだけです)、ボードの適切な正方形に楕円を描画することを目的としています。私の現在のコードは、ユーザー入力を処理するための新しいクラスを作成することを指定した作業に続くものです。
私は現在、JFrameに新しいアイテムを追加するためにそれを取得しようとしているだけですが、ほとんど成功していません。入力のダミー呼び出しがあります。入力した内容を確認するのではなく、左上隅の最初の正方形に配置する必要がある楕円を呼び出すだけです。オブジェクトをJFrameに描画することはできますが(フレーム全体を占めますが)、常に実際のボードの背後にあります(つまり、フレームを伸ばすと円が見えます)。ボードの上にJPanelsなどを追加してみましたが、今のところ運が悪いです。
これが私がタスクのために与えられた楕円形を作成するためのコードです。私がしているのは、位置(0,0,10,10)で新しい楕円をインスタンス化することだけです。それが描くとき、それは全体のJFrameを占めますが、それは実際のボードの後ろにもあります......何かアイデアはありますか?
package lab4;
import javax.swing.*;
import java.awt.*;
/** Oval Supplier Class
* Author: David D. Riley
* Date: April, 2004
*/
public class Oval extends JComponent {
/** post: getX() == x and getY() == y
* and getWidth() == w and getHeight() == h
* and getBackground() == Color.black
*/
public Oval(int x, int y, int w, int h) {
super();
setBounds(x, y, w, h);
setBackground(Color.black);
}
/** post: this method draws a filled Oval
* and the upper left corner of the bounding rectangle is (getX(), getY())
* and the oval's dimensions are getWidth() and getHeight()
* and the oval's color is getBackground()
*/
public void paint(Graphics g) {
g.setColor( getBackground() );
g.fillOval(0, 0, getWidth()-1, getHeight()-1);
paintChildren(g);
}
}
編集:これは今私たちが探しているコードです-
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package lab4;
/**
*
* @author Scott
*/
import java.awt.*;
import java.util.Scanner;
import javax.swing.*;
public class GameBoard {
private JFrame win;
private int count = 1;
//Create new GUI layout
GridLayout layout = new GridLayout(3, 3);
JPanel panel = new JPanel(layout);
//Create a new Array of Rectangles
Rectangle[][] rect = new Rectangle[3][3];
public GameBoard() {
//Create new JFrame + Set Up Default Behaviour
win = new JFrame("Tic Tac Toe");
win.setBounds(0, 0, 195, 215);
win.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
win.setResizable(true);
//Loop goes through each line of the array. It creates a new rectangle
//determines it's colour based on modulus division
//Add's the rectangle to the JPanel.
for (int i = 0; i < rect.length; i++) {
for (int j = 0; j < rect[i].length; j++) {
rect[i][j] = new Rectangle(0, 0, 1, 1);
if (count % 2 != 0) {
rect[i][j].setBackground(Color.black);
} else {
rect[i][j].setBackground(Color.red);
}
panel.add(rect[i][j]);
count++;
}
}
//Sets the game to be visible.
win.add(panel);
win.setVisible(true);
//userInput();
}
private void userInput() {
Scanner scan = new Scanner(System.in);
}
}