Форум программистов, компьютерный форум, киберфорум
Python: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.66/76: Рейтинг темы: голосов - 76, средняя оценка - 4.66
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43

Игра "Дурак"

01.11.2017, 12:28. Показов 16218. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет!Пишу всем известную карточную игру 'Дурак', но дошёл до стадии раздачи карт и завис.Проблема вот в чём: как сделать так, чтобы при раздаче карт они все были разные?(ну не описывать же мне каждую карту).Язык программирования Python.
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
01.11.2017, 12:28
Ответы с готовыми решениями:

Нашел баг в питоне либо я дурак(
Привет форумчане. Пишу программу для работы для обучения спецов в ДЦ. Нужно следовать плану работ и тд и тп. есть 2 набора ключевых...

Игра +1 - это современная, набирающая популярность игра на просторах интернета
Игра +1 - это современная, набирающая популярность игра на просторах интернета. Она завлекает всех своей простотой и желанием добиваться...

Игра летающая птица. Не работает игра
import pygame import random pygame.init() SCREEN = pygame.display.set_mode((500, 750)) # Setting the display ...

18
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
01.11.2017, 16:55
Ничоси вопросик.
Проблема именно при раздаче? А до раздачи они у вас уже разные?
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43
01.11.2017, 21:18  [ТС]
К сожалению нет, вот в этом то я и прошу помочь.Проблема сделать так, чтобы все 36 карт были разные.Самый такой вариант, который приходит на вскидку - описать каждую карту.Но я думаю есть ещё варианты?
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2017, 10:37
В таком случае
1. Отложите думы о gui и раздаче. То, что вам нужно - это самая основа.
2. Да, надо описать каждую карту. Масть и достоинство. Имеет смысл сделать это через объекты. (Другой вариант - через numpy-массивы.)
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43
02.11.2017, 12:34  [ТС]
Хорошо, я понял.Как получится - напишу
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2017, 14:55
Можно так, для начала:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Card(object):
    def __init__(self, suit, value):
        self.suit = suit
        self.value = value
 
    def __repr__(self):
        return "<Card {0} {1}>".format(self.suit, self.value)
 
pack = []
for s in range(4):
    for v in range(6, 14):
        pack.append(Card(s, v))
 
print (pack)
Подчёркиваю - это ДЛЯ НАЧАЛА. pack - колода, она тоже должна быть классом.
И отдельно (!) код для рисования ея.
1
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43
02.11.2017, 14:59  [ТС]
Я плохо пока что знаком с объектами и классами(так скажем - теоретически), кароче - я не понимаю как через объекты это сделать(описать достоинство и масть каждой карты).Помогите пожалуйста, хотя-бы одну - две карты, дальше я должен понять
Python
1
2
3
4
5
6
7
8
9
10
class Karti:
    karta1 = karta2 = karta3 = karta4 = 6
    karta5 = karta6 = karta7 = karta8 = 7
    karta9 = karta10 = karta11 = karta12 = 8
    karta13 = karta14 = karta15 = karta16 = 9
    karta17 = karta18 = karta19 = karta20 = 10
    karta21 = karta22 = karta23 = karta24 = 11
    karta25 = karta26 = karta27 = karta28 = 12
    karta29 = karta30 = karta31 = karta32 = 13
    karta33 = karta34 = karta35 = karta36 = 14
Вот, что я делал
P.S.Спасибо пользователю выше)
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2017, 15:03
О, приколись, чё я нашёл https://en.wikipedia.org/wiki/... in_Unicode
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43
02.11.2017, 15:12  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
О, приколись, чё я нашёл https://en.wikipedia.org/wiki/... in_Unicode
, интересно, это у меня в проекте можно использовать?)
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2017, 15:18
Легко. Только нужна нормальная консоль с поддержкой Юникода.
Модифициуем:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
SUIT_STARTING_CODE = [0x1F0A0, 0x1F0B0, 0x1F0C0, 0x1F0D0]
 
 
class Card(object):
    def __init__(self, suit, value):
        self.suit = suit
        self.value = value
 
    def __repr__(self):
        # return "<Card {0} {1}>".format(self.suit, self.value)
        return chr(SUIT_STARTING_CODE[self.suit]+self.value)
 
pack = []
for s in range(4):
    for v in range(6, 15):
        pack.append(Card(s, v))
 
print (pack)
Добавлено через 46 секунд
Вывод: [��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��, ��]

Добавлено через 45 секунд
Ну, тут на форуме Юникод не очень поддерживается, как оказалось, так что сорри.
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43
02.11.2017, 15:32  [ТС]
А есть гарантия, что при сборке игры в exe файл, unicode будет верно отображаться)?

Добавлено через 3 минуты
И да, вот хочу с классами получше разобраться, нет ли понятного и в тоже время лёгкого для усвоения материала?
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2017, 15:33
Я ж говорю - зависит от консоли У меня на линуксе всё пучком, а ехе (зачем, кстати?) предполагает винду.

Добавлено через 1 минуту
Цитата Сообщение от kroJlik Посмотреть сообщение
И да, вот хочу с классами получше разобраться, нет ли понятного и в тоже время лёгкого для усвоения материала?
Навскидку нет. Любое "введение в ООП для чайников".
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43
02.11.2017, 15:38  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
Я ж говорю - зависит от консоли У меня на линуксе всё пучком, а ехе (зачем, кстати?) предполагает винду.
У меня установлены и винда и линукс, но в основном работаю на винде и пишу программы под винду.Поэтому, после того, как проект готов, я собираю его в exe
0
Эксперт Python
 Аватар для dondublon
4653 / 2073 / 366
Регистрация: 17.03.2012
Сообщений: 10,183
Записей в блоге: 6
02.11.2017, 15:40
Цитата Сообщение от kroJlik Посмотреть сообщение
У меня установлены и винда и линукс, но в основном работаю на винде и пишу программы под винду.Поэтому, после того, как проект готов, я собираю его в exe
А смысл? Собирать надо только в случае, если это требуется по деплойменту. Для питоновских скриптов, как правило, нормально существовать именно в виде питоновских скриптов, сборка в ехе нетипична.
0
0 / 0 / 0
Регистрация: 20.06.2015
Сообщений: 43
02.11.2017, 15:53  [ТС]
Цитата Сообщение от dondublon Посмотреть сообщение
А смысл?
Наверное, чтобы показать другим)
0
0 / 0 / 0
Регистрация: 19.07.2020
Сообщений: 1
19.07.2020, 16:22
kroJlik, Я решил написать дурака и увидел твой вопрос. Я написал вот что:
Python
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
from random import randint as r
 
B = "\033[30 m"
R = "\033[31 m"
 
 
card_6_1 =  str(R) + "6" + "♦"
card_7_1 = str(R) + "7" + "♦"
card_8_1 = str(R) + "8" + "♦"
card_9_1  = str(R) + "9" + "♦"
card_10_1  = str(R) + "10" + "♦"
card_V_1 = str(R) + "V" + "♦"
card_D_1 = str(R) + "D" + "♦"
card_K_1 = str(R) + "K" + "♦"
card_T_1 = str(R) + "T" + "♦"
 
card_6_2 = str(R) + "6" + "♥"
card_7_2 = str(R) + "7" + "♥"
card_8_2 = str(R) + "8" + "♥"
card_9_2  = str(R) + "9" + "♥"
card_10_2  = str(R) + "10" + "♥"
card_V_2 = str(R) + "V"  + "♥"
card_D_2 = str(R) + "D" + "♥"
card_K_2 = str(R) + "K" + "♥"
card_T_2 = str(R) + "T" + "♥"
 
card_6_3 = str(B) + "6" + "♣"
card_7_3 = str(B) + "7" + "♣"
card_8_3 = str(B) + "8" + "♣"
card_9_3  = str(B) + "9" + "♣"
card_10_3  = str(B) + "10" + "♣"
card_V_3 = str(B) + "V" + "♣"
card_D_3 = str(B) + "D" + "♣"
card_K_3 = str(B) + "K" + "♣"
card_T_3 = str(B) + "T" + "♣"
 
card_6_4 = str(B) + "6" + "♠"
card_7_4 = str(B) + "7" + "♠"
card_8_4 = str(B) + "8" + "♠"
card_9_4  = str(B) + "9" + "♠"
card_10_4  = str(B) + "10" + "♠"
card_V_4 = str(B) + "V" + "♠"
card_D_4 = str(B) + "D" + "♠"
card_K_4 = str(B) + "K" + "♠"
card_T_4 = str(B) + "T" + "♠"
 
cardS = [
    card_6_1,
    card_7_1,
    card_8_1,
    card_9_1,
    card_10_1,
    card_V_1,
    card_D_1,
    card_K_1 ,
    card_T_1 ,
    card_6_2,
    card_7_2 ,
    card_8_2 ,
    card_9_2,
    card_10_2 ,
    card_V_2,
    card_D_2,
    card_K_2,
    card_T_2 ,
    card_6_3,
    card_7_3 ,
    card_8_3,
    card_9_3,
    card_10_3,
    card_V_3,
    card_D_3 ,
    card_K_3 ,
    card_T_3 ,
    card_6_4 ,
    card_7_4,
    card_8_4,
    card_9_4 ,
    card_10_4,
    card_V_4 ,
    card_D_4 ,
    card_K_4,
    card_T_4
]
 
 
mast = [R + "♦", R + "♥", B + "♣", B + "♠"]
 
cards = []
 
for card in range(0, 35):
    m = r(0, len(cardS)-1)
    cards.append(cardS[m])
    cardS.remove(cardS[m])
 
 
def My_cards():
    global My_cards
    
    My_cards = []
    while len(My_cards) < 7:
        My_cards.append(cards[0])
        cards.remove(cards[0])
 
 
def get_cards():
    global c
    
    for c in range(1, len(My_cards)):
        c -= 1
        print(cards[c] + ", ")
        
My_cards()
 
 
KOZIR = cards[-1]
 
 
print(cards[0])
print()
print(KOZIR)
print()
get_cards()
Незнаю может поможет, но я сделал тут именно раздачу карт.
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2696 / 1602 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
20.07.2020, 15:38
Госпаде, что вы тут устроили, больше всего доставило:

Python
1
2
class Karti:
    karta1 = karta2 = karta3 = karta4 = 6
Python
1
2
3
4
card_6_1 = str(R) + "6" + "♦"
card_7_1 = str(R) + "7" + "♦"
...
KOZIR = cards[-1]
Добавлено через 6 минут
Генерация карт:

Python
1
2
3
4
5
6
7
8
9
10
cards = [(suit, price) for suit in ["Hearts", "Diamonds", "Clubs", "Spades"] for price in range(6, 15)]
 
print(*cards, sep="\n")
 
# ('Hearts', 6)
# ('Hearts', 7)
# ('Hearts', 8)
# ...
# ('Spades', 13)
# ('Spades', 14)
0
 Аватар для Semen-Semenich
5237 / 3481 / 1176
Регистрация: 21.03.2016
Сообщений: 8,310
20.07.2020, 20:28
DmFat, представляю код от qwertyuiasd где для игры используется ну допустим 600 карт (гипотетически)
0
21.07.2020, 08:03

Не по теме:

Semen-Semenich, игры где 1000 персонажей :D

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.07.2020, 08:03
Помогаю со студенческими работами здесь

Карточная игра (покер дурак и т.д.)
Стоит ли её писать так: на gui есть webview, в который загружается html5-приложение. Я понимаю что теоретически так можно писать...

Карточная игра "Дурак" - Ошибка загрузки dll карт
Есть проект (вроде должен работать). Запуская в Visual Studio 2010 получаю ошибку &quot;Ошибка загрузки dll карт&quot;. Самому исправить не...

Карточная игра "Дурак", вывод карт на экран
Пишу курсовую, карточного &quot;Дурака&quot;, столкнулся с проблемой выводом карт на экран. Нужно чтобы карты игрока выводились внизу по центру(в...

Клиент серверная игра на двоих и более. "Дурак"
Всем привет! Суть такова: есть движок для игрового сайта, написанный мною средствами php - mySQL - javaScript. Он рассчитан на...

Карточная игра "Дурак".Как написать нормальный ИИ?
Так получилось, что работником IT-индустрии я не являюсь.Но моим увлечением является информационные технологии и программирование.У нас...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Уведомление о неверно выбранном значении справочника
Maks 06.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "НарядПутевка", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если в документе выбран неверный склад. . .
Установка Qt Creator для C и C++: ставим среду, CMake и MinGW без фреймворка Qt
8Observer8 05.04.2026
Среду разработки Qt Creator можно установить без фреймворка Qt. Есть отдельный репозиторий для этой среды: https:/ / github. com/ qt-creator/ qt-creator, где можно скачать установщик, на вкладке Releases:. . .
AkelPad-скрипты, структуры, и немного лирики..
testuser2 05.04.2026
Такая программа, как AkelPad существует уже давно, и также давно существуют скрипты под нее. Тем не менее, прога живет, периодически что-то не спеша дополняется, улучшается. Что меня в первую очередь. . .
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизитов табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: 1. Реализовать контроль заполнения реквизита. . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru