Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/8: Рейтинг темы: голосов - 8, средняя оценка - 4.50
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149

Проблемка с кодом.Изображение не двигается

01.10.2013, 21:07. Показов 1605. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет форумчанам. Возникла проблема,делаю небольшую программку,которая двигает картинку,но она не работает,к сожалению.Да и намешал я тут всего и всякого)

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
package Game;
 
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
 
public class Game {
 
    public static int WIDTH = 600; // ширина
    public static int HEIGHT = 500; // высота
    public static String NAME = "TUTORIAL 1";
 
    private static People people;
    
    private boolean leftPressed = false;
    private boolean rightPressed = false;
    private boolean topPressed = false;
    private boolean downPressed = false;
    
    private static int x = 0;
    private static int y = 0;
    
    private int dx;
    private int dy;
    
    public static void main(String[] args) {
        
        Graphics g = null;
        
        JFrame frame = new JFrame(Game.NAME);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.setSize(WIDTH, HEIGHT);
        frame.setResizable(false);
        frame.setVisible(true);
        frame.setBackground(Color.BLACK);
        Image img;
        try {
            
            img = ImageIO.read(new File("C:\\Users\\Сергей\\workspace\\Game\\image\\hero.png"));
            people = new People(img);
            
            people = getSprite("C:\\Users\\Сергей\\workspace\\Game\\image\\hero.png");
            people.draw(g, x, y);
            
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        
 
        
    }
     public void move() {
 
            x += dx;
            y += dy;
 
            if (x < 1) {
                x = 1;
            }
 
            if (y < 1) {
                y = 1;
            }
        }
    
    public void update(long delta) {
        if (leftPressed == true) {
            x--;
        }
        if (rightPressed == true) {
            x++;
        }
    }
    
    public void update2(long delta) {
        if (downPressed == true) {
            y--;
        }
        if (topPressed == true) {
            y++;
        }
    }
    
    private class KeyInputHandler extends KeyAdapter {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                leftPressed = true;
                dx = -1;
            }
            if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                rightPressed = true;
                dx = 1;
            }
            if (e.getKeyCode() == KeyEvent.VK_UP) {
                topPressed = true;
                dy = -1;
            }
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                downPressed = true;
                dy = 1;
            }
        } 
 
        public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                leftPressed = false;
                dx = 0;
            }
            if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                rightPressed = false;
                dx = 0;
            }
            if (e.getKeyCode() == KeyEvent.VK_UP) {
                topPressed = false;
                dy = 0;
            }
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                downPressed = false;
                dy = 0;
            }
        }
    }
    public static People getSprite(String path) {
        BufferedImage sourceImage = null;
 
        try {
            
            sourceImage = ImageIO.read(new File(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        People sprite = new People(Toolkit.getDefaultToolkit().createImage(sourceImage.getSource()));
 
        return sprite;
    }
    
}
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
package Game;
 
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
 
public class People {
    private Image image;
 
    public People(Image image) {
        this.image = image;
    }
 
    public int getWidth() {
        return image.getWidth(null);
    }
 
    public int getHeight() {
        return image.getHeight(null);
    }
 
    public void draw(Graphics g,int x,int y) {
 
        g.drawImage(image,x,y,null);
    }
}
Мдя,столько ненужного и непонятного,запутался вообщем.Не поможете решить проблемку)

Добавлено через 49 минут
Со статьи на хабре взял кодик,получилось так:
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
package Game;
 
import java.awt.BorderLayout;
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Toolkit;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.JFrame;
 
public class Game extends Canvas implements Runnable {
    private static final long serialVersionUID = 1L;
 
    private boolean running;
 
    public static int WIDTH = 700;
    public static int HEIGHT = 600;
    public static String NAME = "TUTORIAL 1";
 
    private boolean leftPressed = false;
    private boolean rightPressed = false;
    private boolean topPressed = false;
    private boolean downPressed = false;
    
    public static Sprite hero;
    private static int x = 0;
    private static int y = 0;
 
    public void start() {
        running = true;
        new Thread(this).start();
    }
 
    public void run() {
        long lastTime = System.currentTimeMillis();
        long delta;
 
        init();
 
        while(running) {
            delta = System.currentTimeMillis() - lastTime;
            lastTime = System.currentTimeMillis();  
            render();
            update(delta);
        }
    }
 
    public void init() {
        addKeyListener(new KeyInputHandler());
        hero = getSprite("C:\\Users\\дНМ\\workspace\\Game\\image\\heroG.png");
    }
 
    public void render() {
        BufferStrategy bs = getBufferStrategy();
        if (bs == null) {
            createBufferStrategy(2);
            requestFocus();
            return;
        }
 
        Graphics g = bs.getDrawGraphics(); //ïîëó÷àåì Graphics èç ñîçäàííîé íàìè BufferStrategy
        g.setColor(Color.black); //âûáðàòü öâåò
        g.fillRect(0, 0, getWidth(), getHeight()); //çàïîëíèòü ïðÿìîóãîëüíèê 
        hero.draw(g, x, y);
        g.dispose();
        bs.show(); //ïîêàçàòü
    }
 
    public void update(long delta) {
        if (leftPressed == true) {
            x--;
        }
        if (rightPressed == true) {
            x++;
        }
    }
    public void update2(long delta2) {
        if (topPressed == true) {
            y--;
        }
        if (downPressed == true) {
            y++;
        }
    }
    public Sprite getSprite(String path) {
        BufferedImage sourceImage = null;
 
        try {
            
            sourceImage = ImageIO.read(new File(path));
        } catch (IOException e) {
            e.printStackTrace();
        }
 
        Sprite sprite = new Sprite(Toolkit.getDefaultToolkit().createImage(sourceImage.getSource()));
 
        return sprite;
    }
 
    public static void main(String[] args) {
        Game game = new Game();
        game.setPreferredSize(new Dimension(WIDTH, HEIGHT));
        JFrame frame = new JFrame(Game.NAME);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setLayout(new BorderLayout());
        frame.add(game, BorderLayout.CENTER);
        frame.pack();
        frame.setResizable(false);
        frame.setVisible(true);
        game.start();
    }
 
    private class KeyInputHandler extends KeyAdapter {
        public void keyPressed(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                leftPressed = true;
            }
            if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                rightPressed = true;
            }
            if (e.getKeyCode() == KeyEvent.VK_UP) {
                downPressed = true;
            }
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                topPressed = true;
            }
        } 
 
        public void keyReleased(KeyEvent e) {
            if (e.getKeyCode() == KeyEvent.VK_LEFT) {
                leftPressed = false;
            }
            if (e.getKeyCode() == KeyEvent.VK_RIGHT) {
                rightPressed = false;
            }
            if (e.getKeyCode() == KeyEvent.VK_UP) {
                topPressed = false;
            }
            if (e.getKeyCode() == KeyEvent.VK_DOWN) {
                downPressed = false;
            }
        }
    }
}
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
package Game;
 
import java.awt.Graphics;
import java.awt.Image;
 
public class Sprite {
    private Image image;
 
    public Sprite(Image image) {
        this.image = image;
    }
 
    
 
    public int getWidth() {
        return image.getWidth(null);
    }
 
    public int getHeight() {
        return image.getHeight(null);
    }
 
    public void draw(Graphics g,int x,int y) {
        g.drawImage(image,x,y,null);
    }
}
Код рабочий(хотя вверх и вниз персонаж не двигается,почему то) , но он такой гигантский нельзя ли как-то уменьшить его?может у кого есть идеи - решения,задача такая вывести картинку(человечка) и клавишами вверх вниз влево вправо двигать картинку человечка.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.10.2013, 21:07
Ответы с готовыми решениями:

Проблемка с кодом на C# Unity
Добрый день! Подскажите,пожалуйста, в чем косяк? Надо сделать чтоб текст выезжал из-за экрана( сверху съезжал) вот код скрипта...

Не двигается изображение
В кнопке &lt;a&gt; есть изображение &lt;img&gt;. Это изображение я пытаюсь подвинуть относительно кнопки (сделать его по центру по вертикали). А вместо...

Записать в распределенную память кодом Си считать оттуда значение кодом PHP
Просьба помочь с решением данной задачи, имеется код #include &lt;stdio.h&gt; #include &lt;time.h&gt; #include &lt;sys/types.h&gt; ...

2
 Аватар для verylazy
462 / 462 / 71
Регистрация: 26.02.2013
Сообщений: 1,263
02.10.2013, 10:06
Цитата Сообщение от LanGrande Посмотреть сообщение
но он такой гигантский нельзя ли как-то уменьшить его?может у кого есть идеи - решения,задача такая вывести картинку(человечка) и клавишами вверх вниз влево вправо двигать картинку человечка.
а ты задай эти вопросы своей супер поисковой системе, которая парсит интернеты, ну или на худой конец у гугла спроси
0
6 / 6 / 1
Регистрация: 15.09.2013
Сообщений: 149
02.10.2013, 22:57  [ТС]
Вот еще один пример:
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
package Game;
 
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Image;
import java.io.File;
import java.io.IOException;
 
import javax.imageio.ImageIO;
import javax.swing.JFrame;
 
public class Game extends Canvas {
    private static final long serialVersionUID = 1L;
 
    public static int WIDTH = 300;
    public static int HEIGHT = WIDTH / 12 * 6;
    public static String NAME = "TUTORIAL 1";
 
    private Image image;
 
    public static void main(String[] args) {
 
        JFrame frame = new JFrame();
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        frame.setResizable(false);
        frame.setVisible(true);
        frame.setSize(WIDTH * 2, HEIGHT * 3);
        frame.getContentPane().setBackground(Color.BLACK);
        frame.setTitle(NAME);
 
    }
 
    public void paintComponent(Graphics g) {
 
        try {
            image = ImageIO.read(new File(
                    "C:\\Users\\Сергей\\workspace\\Game\\image\\heroG.png"));
 
            int imageWidth = image.getWidth(this);
            int imageHeight = image.getHeight(this);
 
            g.drawImage(image, 0, 0, null);
 
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
    }
}
Вот тут вроде бы ну точно должно выводится,а не хочет..

Добавлено через 7 часов 23 минуты
Вывел картинку вот так:
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
package Game;
 
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import javax.imageio.ImageIO;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
 
/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
 
public class Game {
    
    public static final int WIDTH = 600;
    public static final int HEIGHT = 500;
 
    public static void main(String avg[]) throws IOException
    {
        Game abc = new Game();
    }
 
    public Game() throws IOException
    {
        BufferedImage img=ImageIO.read(new File("C:\\Users\\дНМ\\workspace\\Game\\image\\heroG.png"));
        ImageIcon icon=new ImageIcon(img);
        
        JFrame frame=new JFrame();
        frame.setLayout(new FlowLayout());
        frame.setSize(WIDTH,HEIGHT);
        
        JLabel lbl=new JLabel();
        lbl.setIcon(icon);
        frame.add(lbl);
        
        frame.setVisible(true);
        frame.getContentPane().setBackground(Color.BLACK);
        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
}
Но хотелось бы вывести ее через drawImage

Добавлено через 5 минут
Чтобы указать координаты вывода.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
02.10.2013, 22:57
Помогаю со студенческими работами здесь

Поиск в текстовом файле с html-кодом или css-кодом и вывести список всех ссылок
help. Как вообще работает и как вообще мне заставить ориентировать прогу в файле именно за этими ссылками. :(

В IE не двигается
Всем привет, у меня такая проблема, сделал сайт там двигаются на заднем плане картинки, во всех браузерах нормально а в Internet Explorer...

Не двигается персонаж
Решил создать простой 2D платформер. Раскидал объекты, накинул на них нужные компоненты. Написал скрипт для персонажа, прописал все кнопки...

Не двигается кнопка
хочу передвинуть кнопку в другую часть экрана но она не хочет туда переходить что не так я делаю? &lt;html&gt; &lt;head&gt; ...

Не двигается фигура
Всем привет, тут такая проблема, вроде все верно написано, а фигура (squere) не хочет двигаться... Квадрат появляется на форме...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru