webForumDet fria alternativet

Strukturera upp klasser och hantering av program...

0 svar · 844 visningar · startad av Blårand

BlårandMedlem sedan jan. 20031 504 inlägg
#1

Har sedan tidigare skapat klasser för att hantera en kortlek, och har nu även skapat klasser för att få en spelplan att lägga korten på. Tanken är att det ska bli en pokerpatiens, även om huvudsyftet enbart är att prova på, och lära mig mer om java. Nu när jag har en fungerande korthantering och även en fungerande spelplan, undrar jag hur jag bäst knyter ihop det hela, så att strukturen blir så bra som möjligt?

Min klasstruktur är enligt nedan:

Kortleken
Kort.java - Ett objekt som ska vara ett kort i en kortlek.
Kortlek.java - Skapar en array som innehåller 52 objekt av Kort.
Poang.java - Klass som rättar korten och håller reda på poängen.

Spelplanen
Spelplan.java - Är den klass som skapar själva spelplanen genom att använda sig av klaserna nedan.
Menu.java - Klassen som hanterar menyerna på spelplanen.
MouseClickWindow.java - Använder sig av klassen MousePanel, som i sin tur håller reda på vart på spelplanen man klickat med musen, och vad som då ska hända.

Klassen Spelplan ser ut enligt nedan:

import java.awt.*;
import javax.swing.*;

public class Spelplan extends JPanel
{
	Spelplan() {
		ImageIcon icon;
		JLabel label1;

		// Skapar framen
		JFrame frame = new MouseClickWindow();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setResizable(false);
		frame.setTitle("Pokerpatiens");
	
		// Lägger till bakgrundsbilden
		icon = new ImageIcon("images/bakgrund.gif");
		label1 = new JLabel("",icon,SwingConstants.CENTER);
		add(label1);
		frame.getContentPane().add(label1);

		// Lägger till menyn
		frame.setJMenuBar(new Menu());
		
		// Gör framen synlig
		frame.setVisible(true);
	}
}

För att prova att både kortklasser och spelplan fungerar, provar jag dessa genom att använda klassen TestaKortlek. Klassen skapar upp spelplanen, skapar en blandad kortlek och plockar fem kort som den presenterar i prompten. Klassen ser ut enligt nedan:

import java.io.*;

class TestaKortlek
{
	public static void main(String args[]) throws IOException
	{
		Spelplan spelplan = new Spelplan();
		
		Kortlek kortlek1 = new Kortlek();
		Kort[] arrSpelkort = new Kort[5];

		// Hämtar spelkort och lägger i kortarrayen
		for (int d=0; d<5; d++)
		{
			arrSpelkort[d]= kortlek1.delaUtEttKort();
		}

		// Skriver ut de hämtade korten
		for (int d=0; d<5; d++)
		{
			System.out.println(arrSpelkort[d].getKortfarg() + arrSpelkort[d].getKortvarde());
		}
	}
}

Resultatet blir nu en spelplan där jag med musen kan klicka på en kortplats och registrera vilken kortplats jag tryckt på, jag kan använda menyerna och även hantera kortleken. Som test har jag lagrat testuppgifterna i prompten för att se att allt fungerar. Det ser då ut enligt bilden: http://member.webforum.nu/Bl�rand/java_wf.gif

Nu till själva frågan. Är detta en bra strukturering av klasserna? Hur strukturerar jag bäst upp den klass som ska vara själva maskineriet, och som i detta fall kallas för "TestaKortlek.java"?

Hur ska man få exempelvis Menu.java att kommunicera med "TestaKortlek.java", så att man kan starta om spelet om man exempelvis valt "Nytt spel" i menyn?

Har en fungerande spelplan, och en fungerande kortlek, men vet inte hur jag ska strukturera upp det så att spelplanen, kortleken och klassen för att hantera själva spelet, bäst ska kunna kommunicera med varandra?

Någon som kan ha ett bra tips på hur jag ska strukturera upp det hela, eller har förbättringsförslag på ovanstående?

Genererad på 379 ms · cache AV · v20260730165559-full.f96bc7eb