tutorials.de Buch-Aktion 05/2012
ERLEDIGT
NEIN
ANTWORTEN
5
ZUGRIFFE
5940
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Avatar von 'ka
    'ka 'ka ist offline Mitglied
    Registriert seit
    Mar 2004
    Ort
    katha
    Beiträge
    11
    huhu dud!
    Also ich hab da mal n problem.... wir sollen uns in der schule ein Projekt überlegen was wir dann mit Java realisieren....
    So dann kam mir die Idee ein memory Spiel zu proggen...
    nun ist meine Frage ob jemand Anregung oder ähnliches für mich hat, da ich noch nich so fitt in java bin... und nich weiß woh ich anfangen soll.

    Wäre n1ce! 'ka
     
    ich glaube nur das was ich weiß oder gesehen habe!

  2. #2
    ADA&QS ADA&QS ist offline Mitglied
    Registriert seit
    Apr 2004
    Beiträge
    18
    Fang mit der Oberflache an.
    Zuerst wie ereuge ich eine Fenster ?
    Dann wie kann ich eine Grafik im Fenster anzeigen um eine Karte anzuzeigen? Wie kann ich eine Listner/Beobachter zur Grafik hinzufugen?
    Dann kommt das umdrehnen der Karte also das erstetzten der einen Grafik durch die andere Grafik.
    Fuer all das hat Java diverse Moglichkeiten, probier sie aus um festzustellen welche dir am besten liegt.

    Dann solltest du fest stellen wie aufwendig das Spiel werden soll und einen Anforderungskatalog erstellen.
     

  3. #3
    torsch2711 torsch2711 ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Ort
    Hessen
    Beiträge
    310
    Hi,

    also ich würd mir erstmal überlegen wie ich das Spiel in verschiedene Komponenten zerlegen kann und die sauber auf ein Entwicklungskonzept projezieren.

    z.B.: Könntest Du hier ein MVC-Konzept aufziehen:

    Du betrachtest das Spiel:
    Das Modell:

    Die Abbildungen der Regeln, Verwalten des Zustandsmodelles, Datensätze verwalten, etc.

    Der View:

    Der Graphische Teil. Dieser wird von dem Modell über eine art Update Mechanismus aufgerufen. Jedesmal wenn sich etwas am Modell ändert, muss die Graphische Ansicht geändert werden (oder auch nicht, kommt auf die Änderung an).

    Controller:

    Er gibt Aktionen von aussen an das Modell weiter, welches daraufhin seinen Zustand ändert, etc.

    Dies ist allerdings eine sehr kurze beschreibung.
    Es sollte auch nur verdeutlichen, das man von anfang an ein Konzept erstellen sollte, anstatt blind drauf loszuschreiben. Erleichtert die Wartung für später und man hat jederzeit einen sauberen Überblick

    Ich persönlich würde erstmal das regelwerk umsetzen in einem Modell, vorkommende Datentypen erarbeiten und die jeweilige Verwaltungslogik implementieren.

    Danach würde ich die Graphische Oberfläche erzeugen, welche auch den Controller beinhalten würde (über ActionListener das Modell anstossen um einen neuen Zustand zu erreichen, etc.).

    Dann tada, ist das Game fertig (naja, so einfach dann auch wieder nicht, aber wenigstens in der Theorie). Wenn du allerdings wenig bis gar nix mit Java, Swing, AWT, etc. gemacht hast, schau Dir erstmal die Tutorials auf der Java-Seite an, um einen Einstieg zu bekommen.


    Grüsse

    Torsten
     
    "There's nothing we have to fear, except Fear itself....."

  4. #4
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    Hallo!

    Hier mal ein kleines Beispiel:
    Code java:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    
    package de.tutorials.memory2;
     
    import java.awt.Container;
    import java.awt.GridLayout;
    import java.awt.Image;
    import java.awt.event.MouseAdapter;
    import java.awt.event.MouseEvent;
    import java.awt.image.BufferedImage;
    import java.io.File;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Iterator;
    import java.util.List;
     
    import javax.imageio.ImageIO;
    import javax.swing.BorderFactory;
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
     
    public class Main extends JFrame {
     
        private ImageIcon backIcon;
     
        private CardGame game;
     
        public Main() {
            super("Main");
            setDefaultCloseOperation(EXIT_ON_CLOSE);
            Container c = getContentPane();
            game = new CardGame();
            backIcon = new ImageIcon(game.loadImage("e:/imgs/back.jpg"));
            game.init();
     
            CardPanel cp = new CardPanel();
            cp.populate(game.getCards());
     
            c.add(cp);
     
            pack();
            setVisible(true);
        }
     
        public static void main(String[] args) {
            new Main();
        }
     
        class Card extends JLabel {
     
            private ImageIcon icon;
     
            protected int id;
     
            protected boolean stillInGame = true;
     
            public Card(ImageIcon icon, int id) {
                this.icon = icon;
                this.id = id;
                setIcon(backIcon);
                setBorder(BorderFactory.createEtchedBorder());
     
                addMouseListener(new MouseAdapter() {
                    public void mousePressed(MouseEvent evt) {
                        game.selectCard(Card.this);
                        game.checkCards();
                    }
                });
     
            }
     
            public void showFront() {
                setIcon(this.icon);
            }
     
            public void showBack() {
                setIcon(backIcon);
            }
        }
     
        class CardPanel extends JPanel {
     
            final int MAX_ROWS = 4;
     
            final int MAX_COLUMNS = 4;
     
            public CardPanel() {
                setLayout(new GridLayout(MAX_ROWS, MAX_COLUMNS));
            }
     
            public void populate(List list) {
                for (Iterator iter = list.iterator(); iter.hasNext();) {
                    add((Card) iter.next());
                }
            }
        }
     
        class CardGame {
            private List cards;
     
            private int selectionCount = 0;
     
            private Card current;
     
            private Card previous;
     
            public CardGame() {
                cards = new ArrayList();
            }
     
            public void init() {
                cards.clear();
                loadCards();
                Collections.shuffle(cards);
            }
     
            public Image loadImage(String imgPath) {
     
                final int MAX_WIDTH = 60;
                final int MAX_HEIGHT = 120;
                try {
                    Image img = ImageIO.read(new File(imgPath)).getScaledInstance(
                            MAX_WIDTH, MAX_HEIGHT, BufferedImage.SCALE_SMOOTH);
                    return img;
                } catch (IOException e) {
                    e.printStackTrace();
                }
                return null;
            }
     
            private void loadCards() {
     
                for (int i = 0; i < 8; i++) {
                    ImageIcon icon = new ImageIcon(loadImage("e:/imgs/" + i
                            + ".jpg"));
     
                    Card c = new Card(icon, i);
                    cards.add(c);
                    c = new Card(icon, i);
                    cards.add(c);
                }
            }
     
            public void selectCard(Card c) {
     
                if (current == c)
                    return;
                if (!c.stillInGame)
                    return;
                c.showFront();
                if (selectionCount++ % 2 == 0) {
                    if (current != null && previous != null) {
                        current.showBack();
                        previous.showBack();
                    }
                    current = null;
                    previous = null;
                }
     
                previous = current;
                current = c;
            }
     
            public void checkCards() {
                if (current != null && previous != null)
                    if (current.id == previous.id) {
                        current.stillInGame = false;
                        previous.stillInGame = false;
                        current = null;
                        previous = null;
                        System.out.println("match");
                    }
            }
     
            public List getCards() {
                return cards;
            }
        }
    }

    Gruß Tom
    Angehängte Dateien Angehängte Dateien
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

  5. #5
    torsch2711 torsch2711 ist offline Mitglied Brokat
    Registriert seit
    Oct 2004
    Ort
    Hessen
    Beiträge
    310
    Tom, Tom,

    hattest du mal wieder zuviel Zeit was?
     
    "There's nothing we have to fear, except Fear itself....."

  6. #6
    Registriert seit
    Jun 2002
    Ort
    Saarbrücken (Saarland)
    Beiträge
    9.886
    Blog-Einträge
    29
    ... hab gedacht, dass ich mal wieder eine kleine Fingerübung gebrauchen könnte...

    Gruß Tom
     
    Java rocks!
    How to become a good Java Programmer?
    Does IT in Java and .Net
    The only valid measurement of code quality: WTFs / minute
    Blog
    Xing
    Twitter

Ähnliche Themen

  1. kleines Memory Spiel
    Von Yuri-Li im Forum Java Grundlagen
    Antworten: 9
    Letzter Beitrag: 02.06.10, 23:43
  2. Memory-Spiel
    Von Manda im Forum Borland CBuilder und VCL
    Antworten: 18
    Letzter Beitrag: 21.11.06, 17:45
  3. Memory-Spiel
    Von andreas2000 im Forum Swing, Java2D/3D, SWT, JFace
    Antworten: 2
    Letzter Beitrag: 02.12.05, 19:45
  4. HILFE bei Memory Spiel
    Von tugi im Forum Java
    Antworten: 5
    Letzter Beitrag: 12.07.04, 08:21
  5. suche hilfe für memory spiel
    Von toewee im Forum Delphi, Kylix, Pascal
    Antworten: 6
    Letzter Beitrag: 03.06.04, 17:54