Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 11

Проект с авианосцем

03.06.2014, 22:08. Показов 978. Ответов 9
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здрасте, задали сделать проект с авианосцем, который содержит на своем борту 5 самолетов, графический интерфейс сделан, а вот с "сердцем" программы - проблемы. Знаю, что самолет должен наследовать авианосец, и дальше все... теорию понимаю, а с кодом проблемы. Возможно кто-нить уже делал что-нить подобное? Возможно у вас есть похожие примеры программ...можна брать шахматы как образец, но там все сложнее, не понимаю целиком код.
Команды вводятся из терминала(консоли), меню сотоит из:
1.Перемещение авианосца
2. Взлет самолета
4.Не делает ничего
//Когда нажимаем 1 программа требует ввести
1. Координат х:6
Координат у:6

2. Нажимаем 1
Координат х:7
Координат у:7

3. Нажимаем 2
Координат х:10
Координат у:8

4. Нажимаем 2
Координат х:3
Координат у:5

5. Если авианосец и самолет на одном месте, то получается такое

//Если мы попробуем переместить авианосец, на песок, программа выдаст "Это невозможно", и продолжит свою работу.
Графический интерфейс:

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
import java.awt.*;
import javax.swing.*;
import java.util.*;
 
class SpecialPanel extends JPanel{
    int[][] game;
    Color white = Color.white;
    Color black = new Color(150,120,120);
    private HashMap<Integer,ImageIcon>  images;
    SpecialPanel(int[][]  ga, HashMap<Integer,ImageIcon> im){
    game = ga;
    images = im;
    this.setForeground(Color.YELLOW);
    }
    public void paintComponent(Graphics g) {
    super.paintComponent(g);  
    for (int i=0; i<game.length; i++){
        g.drawString(""+i,i*48+44,15);
        g.drawString(""+i,i*48+48,game[0].length*48+40);
        for (int j=0; j<game[0].length; j++){
        g.drawString(""+j,7,j*48+48);
        g.drawString(""+j,game.length*48+30,j*48+48);
        images.get(game[i][j]).paintIcon(this,g,i*48+24,j*48+24);
        }
    }
    }
}
public class IGPA extends JFrame{
    private int[][] game;
    private HashMap<Integer,ImageIcon>  images;
    private SpecialPanel jpane;
    public IGPA(int x, int y){
    game = new int[x][y];
    images = new  HashMap<Integer,ImageIcon>();
    }
   public void createWindow(){
    if (! this.isVisible()){
        this.setTitle("Terrain");
        this.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
        jpane = new SpecialPanel(game, images);
        this.setContentPane(jpane);
        jpane.setPreferredSize(new Dimension(game.length*48+48,
                         game[0].length*48+48));
        jpane.setBackground(Color.black);
        this.pack();
        this.setVisible(true);
    }
    }
    public void defineTerrain(int[][]  ga){
    if (game.length != ga.length && game[0].length != ga[0].length)
        throw new SizeError();
    for (int i = 0; i<ga.length; i++){
        for (int j=0; j<ga[0].length; j++){
        game[i][j]=ga[i][j];
        }
    }
    }
    public void declareImage(int c, String s){
    images.put(c,new ImageIcon("images/" + s));
    }
    public void changeBox(int x, int y, int val){
    game[x][y]=val;
    }
    public void redisplay(){
    jpane.repaint();
    }
    public void close(){
    this.dispose();
    }
}
class SizeError extends RuntimeException{}
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2014, 22:08
Ответы с готовыми решениями:

проект в VB 6.0 Разработать проект для решения задачи: является данный треугольник равнобедренным
Разработать проект для решения задачи: является данный треугольник равнобедренным. (Составление программ с использованием условного...

Проект в VB. 3. 1. Создать проект, который по нажатию кнопки будет прорисовывать сердце проколотое стрелой
Создать проект, который по нажатию кнопки будет прорисовывать сердце проколотое стрелой. Заранее спасибо.

Qt creator. Не удается добавить стороннюю библиотеку в проект cmake (добавление в проект boost/algorithm)
Собственно, весь вопрос в заголовке. Осваиваю cmake, не могу подключить &quot;алгоритм&quot; из буст. qtcreater говорит: ...

9
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
03.06.2014, 22:56
Знаю, что самолет должен наследовать авианосец

Судя по этой фразе с теорией у вас тоже проблемы.
0
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 11
04.06.2014, 15:26  [ТС]
Не так выразился, нужно создать класс который сможет обьеденить авианосец и самолет. Это выглядит примерно так
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
04.06.2014, 17:10
Скорее интерфейс в данном случае.
0
6 / 6 / 4
Регистрация: 12.04.2014
Сообщений: 46
04.06.2014, 20:38
согласно картинке я так понимаю надо создать интерфейс "игровой объект" и прописать ему поведение "перемещение по карте", затем описать 2 класса "Авианосец" и "Самолетик" и реализовать поведение из интерфейса (скорее всего через делегирование, тк механика перемещения не изменяется). При описании перемещения авианосца перед делегированием делаем проверку на "песок"
Собственно в чем проблема то?
0
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 11
12.06.2014, 06:34  [ТС]
Здрасте, вот что вышло!
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
public class MoveObjekt {
int x, y;
String name;
 
 
public MoveObjekt() {
x=0;
y=0;
name="noname";
}
 
 
public MoveObjekt(String pname, int px, int py) {
name=pname;
x=px;
y=py;
}
 
public MoveObjekt(MoveObjekt m) {
x=m.getx();
y=m.gety();
name="noname";
}
 
public int getx() {
return x;
}
 
public int gety() {
return y;
}
 
public String getname() {
return name;
}
public void setxy(int px, int py) {
x=px;
y=py;
}
 
public void setname(String pname) {
name=pname;
}
public void draw() {
    
    
}
 
 
}
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
public class Flip extends MoveObjekt {
     
    private Avion av[];
     
    
    public void CreateAvion() {
    av = new Avion[5];
    for(int i=0;i<5;i++){
    av[i]=new Avion((MoveObjekt) this);
    av[i].setname("Avion"+i+1);
    }
    }
     
    
    
    public boolean isWater(int px, int py) {
        return true;
    
     
    }
     
    
    public void setxy(int px, int py) {
    if(isWater(px, py)) {
    super.setxy(px, py);
    
    }
    else System.out.println("Это невозможно");
     
 
     
    }
    public void draw() {
    
        
    }
     
    }
Java
1
2
3
4
5
6
7
8
9
10
public class Avion extends MoveObjekt {
 
    
 
 
    public void draw() {
    
        
    }
    }
Добавлено через 22 минуты
Только теперь, у меня другая проблема, как заставить все классы и граф. интерфейс функцианировать вместе??
Например чтоб создать карту, я пишу в мейне
Java
1
2
3
4
5
IGPA igpa = new IGPA(10,8);
igpa.declareImage(5,"water.png");
igpa.declareImage(10,"aircraftcarrier.png");
int[][] init={{5,5,5,5,5,5,5,5},{5,10,5,5,5,5,5,5},{5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5},{5,5,5,5,5,5,5,5}};
    igpa.createWindow();
Нужно использовать функцию changeBox(но как заставить ее взаимодействовать)?
А потом, для смены картинки redisplay.
Нужен хоть какой то пример.
0
Эксперт Java
 Аватар для KEKCoGEN
2399 / 2224 / 565
Регистрация: 28.12.2010
Сообщений: 8,672
12.06.2014, 09:59
сломал глаза о ваш код. Что такое Flip?
0
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 11
12.06.2014, 17:12  [ТС]
Ну извиняйте, он размещает на борту авианоцса 5 самолетов, координаты каждого самолета соответствуют координатам авианосца, проверяет суша или море т.к. авианосцу нельзя заплывать на сушу
0
61 / 61 / 19
Регистрация: 06.09.2013
Сообщений: 236
Записей в блоге: 1
12.06.2014, 23:45
Цитата Сообщение от KEKCoGEN Посмотреть сообщение
сломал глаза о ваш код. Что такое Flip?

Не по теме:

Мне больше понравился метод создания карты. :D

0
0 / 0 / 0
Регистрация: 24.05.2014
Сообщений: 11
13.06.2014, 05:54  [ТС]
Ага, издевайтесь), я джаву изучаю неполных 3 месяца и задали такое, лучше так чем ничего.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
13.06.2014, 05:54
Помогаю со студенческими работами здесь

Как скопировать проект в другой проект для дальнейшей работы над новой версией (VS)?
(Visual Studio 2013) Например я сделал один проект, пусть это будет проект версия №1, затем я захотел улучшить проект версии №1 и сделать...

Как копировать проект Form.h и конструктор в новый проект
Подскажите, пожалуйста как копировать проект Form.h и конструктор в новый проект

Проект JavaFX не корректно работает проект после запуска!
Народ, помогите разобраться. В общем ситуация такая. Есть проект на JavaFX в среде NetBeans, сборщик ant. Проект базируется на...

Тупой вопрос: как сохранить проект и скомпилированный проект?
Я нажимаю на 'File/Save All' и сохранение происходит автоматически, как изменить путь сохранения? Я сохранил нажав на 'File/Save as' и...

Как подключить проект с github в свой проект
Как подключить проект с github в свой проект? К примеру вот этот https://github.com/vknet/vk Добавлено через 25 минут с помощью...


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

Или воспользуйтесь поиском по форуму:
10
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
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. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru