Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Работа с графикой awt 
:(
    Опции темы
imissyouso
Дата 13.10.2010, 10:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 17.9.2010

Репутация: нет
Всего: нет



Привет всем! Пишу игру "подкидной дурак", логику игры уже написал, всё работает в консоле, уже можно играть, но теперь нужно всё это дело сделать графически. Раньше с графикой в яве никогда не работал, с чего лучше начать? 

Вот такой вопрос: 

Создал класс playground наследник от Frame, в котором создал метод для рисования карты drawCard, который принимает в значение название карты которую нужно нарисовать 
Код:
Код

01    package project; 
02      
03    import java.awt.*; 
04    import java.awt.event.*; 
05      
06    class playground extends Frame { 
07      
08        playground(String s) { 
09      
10            super(s); 
11      
12            setSize(798, 600); 
13      
14            setVisible(true); 
15            setResizable(false); 
16            setLocation(250, 250); 
17            addWindowListener(new WindowAdapter() { 
18      
19                public void windowClosing(WindowEvent ev) { 
20      
21                    System.exit(0); 
22      
23                } 
24            }); 
25      
26        } 
27      
28        public void drawCard(String CardName, Graphics g, int x, int y) { 
29            Image img = getToolkit().getImage("src/project/res/Cards/"+CardName+".png"); 
30            g.drawImage(img, x, y, this); 
31        } 
32      
33      
34        public void paint(Graphics g) { 
35      
36        
37        } 
38      
39      
40    }





Теперь если вызову метод drawCrad в paint'e , то получу изображение карты на экране, это работает. 

А как мне сделать так чтобы я мог вызывать метод drawCard из других классов , в которых у меня прописана логика игры 

Вот например у меня есть класс ParentClass , в нём есть метод showCards: 
Код:
Код

01       //////////////////////////////////////////////// 
02    /////Показать карты //////////////////////////// 
03    //////////////////////////////////////////////// 
04        public void showCards() { 
05            System.out.println("********************"); 
06            System.out.println("********************"); 
07            System.out.println("********************"); 
08            System.out.println("Все карты "+getName()+"а:"); 
09            System.out.println("===================="); 
10            System.out.println("Количество карт: " + cards.size()); 
11            System.out.println("===================="); 
12            Collections.sort(cards, a); 
13            int i=0; 
14            for (Card currentcard : cards) { 
15                  
16                System.out.println(i+". "+currentcard.toString()); 
17                  
18                i++; 
19            } 
20             
21      
22        }





этот метод выводит список карт в консоль, а как сделать так чтобы рисовал эти карты в окне методом drawCard класса playground ?? 
ну ороче чтобы выводил список карт не в консоль, а в окно канртинками 


Если что не понятно, вот выкладываю исходник моего проекта. 

Очень прошу помочь! 

http://zalil.ru/29807613 - исходник
PM MAIL   Вверх
Vladus
Дата 13.10.2010, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 108
Регистрация: 1.2.2008

Репутация: нет
Всего: 4



Цитата

А как мне сделать так чтобы я мог вызывать метод drawCard из других классов , в которых у меня прописана логика игры 

Ну как самый простой вариант, прокидывайте в эти другие классы какой нибудь листенер из playground и дергайте его, когда нужно что то прорисовать. 
Код

public interface MyListener {
    void redraw();
}


Код

class playground extends Frame {
    MyListener listener = new MyListener() {
        public void redraw() {
            drawCard();     
        }
    };
    
    MyBusinessLogicObj obj = new MyBusinessLogicObj(listener);
}


Код

class MyBusinessLogicObj {
    
    MyListener listener;

    public MyBusinessLogicObj(MyListener l) {
        listener = l;
    }
    
    void someLogic() {
        ...
        listener.redraw();
    }
}


Вот что то около этого. А вообще почитайте про mvc. (http://www.oracle.com/technetwork/articles/javase/mvc-136693.html)
Еще можно использовать Observer/Observable.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   jk1
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, jk1.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: GUI и Java FX приложения | Следующая тема »


 




[ Время генерации скрипта: 0.0391 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.