powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Игра Durak на java:
25 сообщений из 26, страница 1 из 2
Игра Durak на java:
    #38358725
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет!
Хочу попратиковаться в java. Цель написание игры Durak. В начале думал использовать массивы но чета не понял как удалять элемент/объект из памяти из массива. Смотрю в сторону - collection framework. Какой тип данных порекомендуете из коллекций? Требование - применения метода randomize(); к объектам коллекции. - удаление объекта/элемента коллекции из памяти. - перемещение или копирование элемента/объекта из одной коллекции в другую.
Или какие есть другие варианты со структурами данных?
Спасибо!
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38358754
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,

Коллекции вам помогут да.
Ну и для референса - http://code.google.com/p/javadurak/source/checkout
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38358757
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.HofmannХочу попратиковаться в java. Цель написание игры Durak. В начале думал использовать массивы но чета не понял как удалять элемент/объект из памяти из массиваОб-null-ять или что?
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38358999
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никDr.Hofmann,

Коллекции вам помогут да.
Ну и для референса - http://code.google.com/p/javadurak/source/checkout
спасиб конечно за ссылку, буду сам писать - с готового кода как-то просто будет, так не узнаю ничего.

авторDr.Hofmann
Хочу попратиковаться в java. Цель написание игры Durak. В начале думал использовать массивы но чета не понял как удалять элемент/объект из памяти из массива
Об-null-ять или что?

Ну видимо да, нулевая ссылка как-таковая не может существовать теряется связь с объектом, в массивах я так понял это возможно.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38359016
Фотография dmitriyche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,

Вот вам простейший пример для генерации и выбора некоторого количества домино.
Для игры Дурак можно додумать, как вариант.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    private List<int[]> generateDominoes(int maxFace, int count) {
        assert maxFace > 0;
        assert count > 0;
        assert count <= (maxFace + 1) * maxFace / 2;
 
        List<int[]> deck = new ArrayList<int[]>();
 
        for (int i = 0; i <= maxFace; i++) {
            for (int j = i; j <= maxFace; j++) {
                deck.add(new int[]{i, j});
            }
        }
 
        List<int[]> result = new ArrayList<int[]>();
        Random random = new Random(System.nanoTime());
 
        for (int i = 0; i < count; i++) {
            int randomIndex = random.nextInt(deck.size());
            result.add(deck.remove(randomIndex));
        }
 
        return result;
    }
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38359018
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dmitriycheDr.Hofmann,

Вот вам простейший пример для генерации и выбора некоторого количества домино.
Для игры Дурак можно додумать, как вариант.

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
    private List<int[]> generateDominoes(int maxFace, int count) {
        assert maxFace > 0;
        assert count > 0;
        assert count <= (maxFace + 1) * maxFace / 2;
 
        List<int[]> deck = new ArrayList<int[]>();
 
        for (int i = 0; i <= maxFace; i++) {
            for (int j = i; j <= maxFace; j++) {
                deck.add(new int[]{i, j});
            }
        }
 
        List<int[]> result = new ArrayList<int[]>();
        Random random = new Random(System.nanoTime());
 
        for (int i = 0; i < count; i++) {
            int randomIndex = random.nextInt(deck.size());
            result.add(deck.remove(randomIndex));
        }
 
        return result;
    }



Спасиб, будем разбираться.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38401555
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вроде начал кодить - но чета медленно:
- заполнил колоду
но не получается разобраться с итератором - не могу посмотреть что в колоде:

Подскажите что не так?

Код: 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.
package durak;

import java.util.ArrayList;
import java.util.Iterator;

    
/**
 *
 * @author admin
 */
public class Koloda {
    
 
 ArrayList UsualKoloda;
 
 public Koloda(){
  UsualKoloda = new ArrayList();
  
  addKarta("bubi","red","six",false);  
   addKarta("bubi","red","sev",false);
    addKarta("bubi","red","eig",false); 
     addKarta("bubi","red","nin",false); 
      addKarta("bubi","red","ten",false);
       addKarta("bubi","red","val",false); 
        addKarta("bubi","red","dam",false); 
         addKarta("bubi","red","kor",false);
          addKarta("bubi","red","tuz",false); 
  addKarta("piki","black","six",false);
   addKarta("piki","black","sev",false);
    addKarta("piki","black","eig",false);
     addKarta("piki","black","nin",false);
      addKarta("piki","black","ten",false);
       addKarta("piki","black","val",false);
        addKarta("piki","black","dam",false);
         addKarta("piki","black","kor",false);
          addKarta("piki","black","tuz",false);
  addKarta("cherv","red","six",false);  
   addKarta("cherv","red","sev",false);
    addKarta("cherv","red","eig",false); 
     addKarta("cherv","red","nin",false); 
      addKarta("cherv","red","ten",false);
       addKarta("cherv","red","val",false); 
        addKarta("cherv","red","dam",false); 
         addKarta("cherv","red","kor",false);
          addKarta("cherv","red","tuz",false); 
          
  addKarta("krest","black","six",false);
   addKarta("krest","black","sev",false);
    addKarta("krest","black","eig",false);
     addKarta("krest","black","nin",false);
      addKarta("krest","black","ten",false);
       addKarta("krest","black","val",false);
        addKarta("krest","black","dam",false);
         addKarta("krest","black","kor",false);
          addKarta("krest","black","tuz",false);
 
  
 }

public void addKarta(String mast, String color, String type, Boolean kozyr){
    
Karta karta = new Karta(mast, color, type, kozyr);

UsualKoloda.add(karta);

}

public ArrayList getUsualKoloda(){
    return UsualKoloda;
}

Iterator iterator = UsualKoloda.iterator();

private void printKoloda(Iterator iterator){
while(iterator.hasNext()){
    Karta karta = (Karta)iterator.next();
    System.out.println(karta.getColor());
}
    }

public void printKoloda(){
    printKoloda(iterator);
}

}




Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
public class DurakGame {
    
    
    
     
    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {
        // TODO code application logic here
        Koloda oneKoloda = new Koloda();
        oneKoloda.printKoloda();
        
 
      

    
    }
}
    
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38401566
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann
Код: 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.
  addKarta("bubi","red","six",false);  
   addKarta("bubi","red","sev",false);
    addKarta("bubi","red","eig",false); 
     addKarta("bubi","red","nin",false); 
      addKarta("bubi","red","ten",false);
       addKarta("bubi","red","val",false); 
        addKarta("bubi","red","dam",false); 
         addKarta("bubi","red","kor",false);
          addKarta("bubi","red","tuz",false); 
  addKarta("piki","black","six",false);
   addKarta("piki","black","sev",false);
    addKarta("piki","black","eig",false);
     addKarta("piki","black","nin",false);
      addKarta("piki","black","ten",false);
       addKarta("piki","black","val",false);
        addKarta("piki","black","dam",false);
         addKarta("piki","black","kor",false);
          addKarta("piki","black","tuz",false);
  addKarta("cherv","red","six",false);  
   addKarta("cherv","red","sev",false);
    addKarta("cherv","red","eig",false); 
     addKarta("cherv","red","nin",false); 
      addKarta("cherv","red","ten",false);
       addKarta("cherv","red","val",false); 
        addKarta("cherv","red","dam",false); 
         addKarta("cherv","red","kor",false);
          addKarta("cherv","red","tuz",false); 
          
  addKarta("krest","black","six",false);
   addKarta("krest","black","sev",false);
    addKarta("krest","black","eig",false);
     addKarta("krest","black","nin",false);
      addKarta("krest","black","ten",false);
       addKarta("krest","black","val",false);
        addKarta("krest","black","dam",false);
         addKarta("krest","black","kor",false);
          addKarta("krest","black","tuz",false);



Ёшкин код! Срочно читать про циклы в традиционных языках программирования и их использование.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38401582
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
вы пытаетесь получить итератор у еще не инициализированной колоды, смотрите отладкой что не так
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38409014
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczDr.Hofmann
Код: 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.
  addKarta("bubi","red","six",false);  
   addKarta("bubi","red","sev",false);
    addKarta("bubi","red","eig",false); 
     addKarta("bubi","red","nin",false); 
      addKarta("bubi","red","ten",false);
       addKarta("bubi","red","val",false); 
        addKarta("bubi","red","dam",false); 
         addKarta("bubi","red","kor",false);
          addKarta("bubi","red","tuz",false); 
  addKarta("piki","black","six",false);
   addKarta("piki","black","sev",false);
    addKarta("piki","black","eig",false);
     addKarta("piki","black","nin",false);
      addKarta("piki","black","ten",false);
       addKarta("piki","black","val",false);
        addKarta("piki","black","dam",false);
         addKarta("piki","black","kor",false);
          addKarta("piki","black","tuz",false);
  addKarta("cherv","red","six",false);  
   addKarta("cherv","red","sev",false);
    addKarta("cherv","red","eig",false); 
     addKarta("cherv","red","nin",false); 
      addKarta("cherv","red","ten",false);
       addKarta("cherv","red","val",false); 
        addKarta("cherv","red","dam",false); 
         addKarta("cherv","red","kor",false);
          addKarta("cherv","red","tuz",false); 
          
  addKarta("krest","black","six",false);
   addKarta("krest","black","sev",false);
    addKarta("krest","black","eig",false);
     addKarta("krest","black","nin",false);
      addKarta("krest","black","ten",false);
       addKarta("krest","black","val",false);
        addKarta("krest","black","dam",false);
         addKarta("krest","black","kor",false);
          addKarta("krest","black","tuz",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.
  int m = 0;
  String[] type = {"six","sev","eig","nin","ten","val","dam","kor","tuz"};
  for(int i = 0; i <= 36; i++){
      if( i < 9 ){
          addKarta("bubi","red",type[m],false);
           m=m+1;
           if(m == 9){m=0;}
          }  
      if( i > 8 && i<18 ){
        addKarta("piki","black",type[m],false);
        m=m+1;
        if(m == 9){m=0;}
          }
       if( i > 17 && i < 27 ){
         addKarta("cherv","red",type[m],false);
         m=m+1;
         if(m == 9){m=0;}
          }
       if( i > 27 && i <= 36 ){
         addKarta("krest","black",type[m],false);
         m=m+1;
          }
  }
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38409028
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
уже лучше, теперь осталось вынести константы и дать им нормальные имена

CARDS_TOTAL_COUNT=36 итд Состроковыми константами тоже самое.
Ну и в идеале я бы наверное все это сделал через enumы
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38420990
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот решил набросать схему классов.
Кто что думает? Если есть какие-то неточности - критика приветствуется.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38420998
забыл ник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как минимум я бы убрал сущность компьютер, потому что это тот же Player. Просто в плейер ввел бы стратегию как ходить
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38421002
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл никкак минимум я бы убрал сущность компьютер, потому что это тот же Player. Просто в плейер ввел бы стратегию как ходить
кстати хотел уточнить по поводу как ходить, правильная логика:
1.добавляем поле "runk" в класс для объекта "karta" т.е 1-6 2-7 3-8 4-9 5-10 6-Валет 7-Дама итд
2.в Array выполняем сортировку sort() по runk - кажды раз после каждого хода.
3. С помощью iterator-ра перебираем коллекцию + будут два условия в которые будут работать
a)-вначале проверяем нужную наименьшую карту которая будет подходить по масти если ее не находим в руке.
2 - бъем наименьшим козырем.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38451502
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделано!
Бета версия: META-Durak.
Build:001
Критика, советы, пожелания от знатоков java приветствуется.
Отдельное спасибо всем тем кто участвовал в обсуждении этого топика!

META-Durak-beta_build-001.zip
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38451645
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dr.Hofmann,
посмотрел один класс...
- в джаве переменные обычно пишутся начиная с маленькой буквы
- вместо m=m+1 лучше m++
- вместо System.out.println(karta.color+" "+karta.mast+" "+karta.type+" "+karta.kozyr);
в Karta лучше переопределить toString и вызывать System.out.println(karta);
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38451730
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ты уверен, что оно вообще работает?
ввожу 4, ход не происходит

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
------------------------------------------------
Козырь в игре bubi
------------------------------------------------

Стол
red cherv sev
red cherv dam
black krest sev
black krest nin

Ваши карты:
black piki nin------1|||red bubi val------2|||red cherv val------3|||red cherv eig------4|||black piki ten------5|||

Делайте ваш ход - цифра от 1 до 5(b-bito-бито):
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38451741
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
"cherv","red"А что, могут быть черные черви или красные пики?
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38451744
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ининциализация колоды какая-то громоздкая... можно было масти сделать через Enum.
Да и вообще зачем ее конструировать. Она вроде последние несколько сотен лет не меняется.
Можно сделать 2 прототипа для 36 и 52 карты и этого хватит на все игры которые только
можно придумать.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38452101
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rema174ты уверен, что оно вообще работает?
ввожу 4, ход не происходит

Код: html
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
------------------------------------------------
Козырь в игре bubi
------------------------------------------------

Стол
red cherv sev
red cherv dam
black krest sev
black krest nin

Ваши карты:
black piki nin------1|||red bubi val------2|||red cherv val------3|||red cherv eig------4|||black piki ten------5|||

Делайте ваш ход - цифра от 1 до 5(b-bito-бито):



Вы пытаетесь подкинуть карту которой нет на столе. - Вот поэтому она не выбрасывается т.к не подходит

авторDr.Hofmann,
"cherv","red"
А что, могут быть черные черви или красные пики?

Долго не думал над этим вопросом - но ответ напрашивается такой т.к черви не могут быть черными а пики красными - поэтому они определены такими какими они должны быть.


авторИнинциализация колоды какая-то громоздкая... можно было масти сделать через Enum.
Да и вообще зачем ее конструировать. Она вроде последние несколько сотен лет не меняется.
Можно сделать 2 прототипа для 36 и 52 карты и этого хватит на все игры которые только
можно придумать.
ок будем думать по поводу Enum.

Но были недочеты некоторые которые убрал сегодня - это вторая бета версия.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38452126
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann, т.к черви не могут быть черными а пики красными - поэтому они определены такими какими они должны быть.
Вот именно, черви и так красные, пики черные, зачем нужны цвета? Тем более что у вас в проекте они нигде не используются. Посмотрел проект, абстракция стола у вас лишняя, и вообще это не ООП. Один большой класс крупье, который копается в кишках других классов и за все отвечает. Представьте что крупье это человек, вы ему будете карты отдавать чтобы он вам их разложил по порядку? Будете отдавать карты чтобы он нашел у вас минимальный козырь? И почему только 2 игрока? на троих крупье уже не раздаст. У вас вообще смешано понятие партии игры и крупье. ДуКомпГесс и ДуЮзерГесс это тоже неправильно. Интерфейс должен быть одинаковый у всех игроков, игра вообще не должна знать кто будет ходить, реальный игрок или компьютер. В общем слишком много ненужных связей. Просто представьте реальную игру, посмотрите кто за что отвечает и нарисуйте диаграмму классов снова, вот просто буквально какие объекты есть в игре и что они делают.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38452146
rema174
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Dr.HofmannВы пытаетесь подкинуть карту которой нет на столе. - Вот поэтому она не выбрасывается т.к не подходит
наверное забыл правила, давно не играл) думал можно подкидывать любую из тех, что есть у себя в наличии
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38452169
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerнарисуйте диаграмму классов снова, вот просто буквально какие объекты есть в игре и что они делают.
Легче, приятель. ООП - это просто один из подходов к разработке.
Не существует никаких научных доказательств того что без ООП нельзя писать софт.
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38452170
Фотография Dr.Hofmann
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javapeckerDr.Hofmann, т.к черви не могут быть черными а пики красными - поэтому они определены такими какими они должны быть.
Вот именно, черви и так красные, пики черные, зачем нужны цвета? Тем более что у вас в проекте они нигде не используются. Посмотрел проект, абстракция стола у вас лишняя, и вообще это не ООП. Один большой класс крупье, который копается в кишках других классов и за все отвечает. Представьте что крупье это человек, вы ему будете карты отдавать чтобы он вам их разложил по порядку? Будете отдавать карты чтобы он нашел у вас минимальный козырь? И почему только 2 игрока? на троих крупье уже не раздаст. У вас вообще смешано понятие партии игры и крупье. ДуКомпГесс и ДуЮзерГесс это тоже неправильно. Интерфейс должен быть одинаковый у всех игроков, игра вообще не должна знать кто будет ходить, реальный игрок или компьютер. В общем слишком много ненужных связей. Просто представьте реальную игру, посмотрите кто за что отвечает и нарисуйте диаграмму классов снова, вот просто буквально какие объекты есть в игре и что они делают.
ясно. )))
Понятно что размещение метода в том или ином классе для вас критично .

авторДуКомпГесс и ДуЮзерГесс это тоже неправильно.
что именно там не правильно?
...
Рейтинг: 0 / 0
Игра Durak на java:
    #38452192
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dr.Hofmann,
для вас критичноДля меня не критично, просто это не объектный подход, все размазано. Нужно чтобы получилось как лего, чтобы можно было вытащить любой кирпичик и заменить на другой при необходимости. Просто подумайте, что нужно будет сделать с вашим кодом если захочется играть в несколько разновидностей игры? Если захочется играть впятером? Если добавить возможность играть по сети? Если это будет игра сложнее дурака и вы посмотрите на свой код через 2-3 месяца с текущим подходом, вы просто в нем не разберетесь.
что именно там не правильно?Подход неправильный. Как будут играть 2 компьютера с тремя игроками? а 2 реальных игрока друг с другом? Игре должно быть все равно, кто ходит, она не обязана знать компьютер это или человек или дрессированная жаба. Единственный критерий - чтобы игрок умел сделать ход.
...
Рейтинг: 0 / 0
25 сообщений из 26, страница 1 из 2
Форумы / Java [игнор отключен] [закрыт для гостей] / Игра Durak на java:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]