2012-09-16 15 views
5

Tipik yenb burada. İlk programlama dersim için tüm güçlü tiz-tarak ızgarasını oluşturmaya çalışıyorum.Java - ana kutu içinde 9 kutu ekleme

Bunu api belgelerinden yapmak için mantıklı olan herşeyi deniyorum ama şimdiye kadar hiç şans yok.

En büyük sorunumun, yöntem ve parametrelerin nasıl kullanılacağını ve toplam bir çaylak olduğunu anlamadığını düşünüyorum, ancak oraya gideceğim.

Bu benim ne var:

import java.awt.Rectangle; 

public class TicTacToe { 
    public static void main (String[] args) { 
     new Rectangle (0,0,30,30); //create new box 
     Rectangle box = new Rectangle (0,0,30,30); // tying the box to a variable 

     box.add (Rectangle 0,0,10,10); /* error box can onot be resolved to a variable*/ 

    } 
} 

Benim soru bu büyük kutusuna 10 yüksekliği 10 büyüklüğünün 9 kutu genişliği eklerim nasıl? Bu kutuları eklediğimde yeni xy boyutlarını çok doğru girmem gerekiyor mu?

Yardımlarınız için teşekkür ederiz!

+1

İlk kod satırınız kullanışlı bir şey yapmaz - sadece kaldırabilirsiniz. Daha büyük sorun, Dikdörtgen'in sadece koordinatları (aslında x, y, width ve height) tutan çok basit bir sınıf olmasıdır. Diğer Dikdörtgenleri tutma yeteneği yoktur. Bunun için kendi sınıfınızı yazmanız gerekecek. Muhtemelen geri dönüp notlarına bakmalısın ya da daha fazla rehberlik için eğitmenine sormalısın. – GreyBeardedGeek

+1

Bir dikdörtgenin bir dikdörtgen içerdiğini, ancak sadece bunun dışında ve içi boş görünebileceğini unutmayın. Ayrıca GreyBearded 'ilk satır kodunuz' anlamına geldiğinde, şu anlama gelir: 'new Rectangle (0,0,30,30); // yeni kutu oluştur. Yaptığınız şey, biri bir değişkene atanan, diğeri göz ardı edilen 2 dikdörtgen oluşturmaktır. Bu box.add satırı geçersiz Java kodu - 'box.add (box2); 'veya benzeri olmalıdır (ancak [Dikdörtgen Ekleme yöntemi] (http://docs.oracle.com/javase/1.4. 2/docs/api/java/awt/Rectangle.html # add (java.awt.Rectangle)) alt bölüm veya kapsayıcılarla ilgili değil) –

cevap

2

Burada amacın, bir kullanıcı arabirimiyle değil, basit bir komut satırı programı yazmak olduğunu varsayalım. Doğru? Eğer öyleyse, o zaman problemi bilgisayar bakış açısından düşünmelisiniz. Tic tac toe tahtası, bir insana, bir bilgisayara 9 kareden oluşan bir set olsa da, her biri 3 olası duruma sahip olan 9 değişkenden oluşan bir settir: 1) bir X ile doldurulmuş, 2) O ve 3) açık. Yani, kurulu, örneğin, bir tam sayı 9 tamsayı olarak gösterilebilir. Bunun gibi

:

int[] board = new int[9]; 

her karenin durumunu izlemek için bazı sabitleri ilan edebilir:

static final int OPEN = 0; 
static final int FILLED_WITH_X = 1; 
static final int FILLED_WITH_O = 2; 

sadece tahta dizi işleyebilirsiniz programın geri kalanı, değişen Durumu (yani öğelerinin değerleri) gerektiği gibi. Bu kartın bir dize temsilini komut satırına bile verebilirsiniz.

Dikdörtgen sınıfını kullanmanın tek nedeni, kartı tahtaya çizmeyi planlıyor olmanızdır. Bu durumda, beyaz bir arka plana sahip büyük bir dikdörtgen oluşturabilir ve ekranda çizebilirim. Daha sonra, her biri koyu bir arka plana sahip olan, oyun ızgarasını veren 9 adet daha küçük dikdörtgenler çizerdim. Sonunda, daha önce tartışılan board dizisinin durumuna göre x ve o'ları (daireler ve çapraz çizgi parçaları) uygun konumlara çizerdim. Buradaki önemli nokta, bir ebeveynin içinde yer alan dikdörtgenlerin bulunmasına gerek olmamasıdır. Aslında, sadece çizmek istediğiniz her biri için koordinat kümesini (4 ondalık sayı) bulmanız ve sonra ekranda istenen yere dikdörtgen çizen bir yöntem yazmanız yeterlidir.