Найти - Пользователи
Полная версия: Список объектов класса. Нужно другое содержимое.
Начало » Python для новичков » Список объектов класса. Нужно другое содержимое.
1 2
py.user.next
IgorDubkov
Закончили словарями (Dict). За год(!) дошли до словарей.
А списками он умеет пользоваться? Какие программы на одних списках он написал?
Ocean
IgorDubkov
вы без интерфейса планируете или с интерфейсом?

IgorDubkov
Игрок, Комп(Игрок), Битва, Игра.
Давай термины уточним. Есть Игрок, а есть Персонаж
Одним персонажем управлять человек будет, а вторым условный “компьютер”?

В битве должны быть возможные действия и “последствия” этих действий, иначе как определить кто победил, кто проиграл? У Битвы должны быть какие-то правила.
У персонажа должны быть какие-то характеристики: очки жизни, например.

А случайный выбор зачем? Какую роль он играет?
IgorDubkov
py.user.next
А списками он умеет пользоваться? Какие программы на одних списках он написал?
Приветствую!
Он (мы) выполняли домашние задания в рамках курса. Моё мнение, что обучение ровно по Доусону проводилось. Скрипты все консольные, анаграммы, виселицы, пароли-логины. Я старался не подрывать авторитет препода курсов, не умничал. Сейчас учебный год закончился, можно. Ооооочень хочу найти повод создать (поучаствовать) не учебный, а какой-то бытовой проектик. Иначе у сына интерес тухнет. Свои амбиции через него надо реализовать, всёж.
IgorDubkov
Ocean
Давай термины уточним. Есть Игрок, а есть Персонаж
Одним персонажем управлять человек будет, а вторым условный “компьютер”?

В битве должны быть возможные действия и “последствия” этих действий, иначе как определить кто победил, кто проиграл? У Битвы должны быть какие-то правила.
У персонажа должны быть какие-то характеристики: очки жизни, например.

А случайный выбор зачем? Какую роль он играет?
Добрый вечер!
Обучение на курсах закончилось словарями. Сами разобрались в функциях, видимости переменных. Начал объяснять ГУЙ ткинтер, а ему скучно теоретизировать. Решил подогреть интерес консольной игрушкой. Типа камень-ножницы-бумага. Или ударил в голову-корпус-ноги, заблокировал голову-корпус-ноги.
Ума хватило сочинить следующее:
пишем класс Игрок с ручным выбором действия;
пишем класс Комп(Игрок) с автовыбором действия;
пишем класс Битва, управление боем и игрой в целом.
Инстанцируем(!) экз Битва и несколько экзов Игрок и Комп.
Управление передаем в Битву. Битва случайно выбирает Игрока.
Игрок через Битву выбирает противника. Игрок через Битву бъет,
противник защищается. По результату у победителя жизнь увеличивается,
а у проигравшего уменьшается. Ход передается победителю и так до какого-то логического финиша.
IgorDubkov
Если реализуем этот алгоритм, то добавим усиленные мечи, щиты и тд и тп. Чем бы дитя не тешилось, лишь бы не курил
py.user.next
IgorDubkov
Он (мы) выполняли домашние задания в рамках курса. Моё мнение, что обучение ровно по Доусону проводилось. Скрипты все консольные, анаграммы, виселицы, пароли-логины.
Так это чужие программы. Какие свои программы он написал, где списков достаточно? Очень сомнительно, что он знает списки, если он ими не пользуется для своих целей.

Ты тоже вот много чего в школе проходил, получал оценки за это. Но вот тебе дать уравнение какое-нибудь сейчас, ты его решишь? Вряд ли. Причём это школьное уравнение будет какое-нибудь, а не вузовское. Порешай ЕГЭ за прошлые годы, убедись, что знания, которые не используются, очень быстро куда-то деваются и их надо изучать заново.
doza_and
IgorDubkov
Просит практического обоснования применения классов.
Нет никакого обоснования. Если они ему не нужны значит не нужны.

По сути классы позволяют создать переменные к которым точечки применяются.
 a=Some()
a.b() # вызов функции
a.c=3 # присвоение свойств или вызов setattr
a()   # вызов a.__call__() в отличии от функции можно изменить состояние
С обычными объектами такого не сделаешь.
А хочет ваш сын так писать или нет его собственное дело.

У меня были архитектурные решения в проектах где не было классов. Только списки и словари. Это был распределенный планировщик пересылки сообщений. Так там наследование не потребовалось а однозначное преобразование любых структур данных в и из json было очень кстати. Те от проекта зависит.
IgorDubkov
Здравствуйте!
Оцифровываем игру Змейка. Бросаем кубик, бежим по полю, поднимаемся в лестницы, падаем по змеям.
Не получается сделать шаги по полю. Влезаю в цикл for и он сразу отрабатывается до конца хода. Как организовать движение по шагам?
Подскажите, пожалуйста. Решал выносом переменных за цикл, но как это сделать в Update не соображу…
Спасибо!
 # Pygame шаблон - скелет для нового проекта Pygame
import pygame
import random
WIDTH = 700
HEIGHT = 700
FPS = 0.5
# Задаем цвета
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# Загрузка всей игровой графики
#background = pygame.image.load('pole.png')
#background_rect = background.get_rect()
class Fon:
    koord = ((30, 665), (108, 653), (177, 647), (251, 648), (322, 642), (390, 641), (462, 648), (528, 653), (601, 659), (674, 656), (669, 584), (602, 583), (527, 577), (460, 569), (392, 573), (322, 571), (249, 577), (179, 576), (108, 573), (33, 582), (33, 509), (111, 510), (181, 508), (253, 505), (322, 503), (389, 501), (462, 505), (531, 503), (603, 515), (671, 515), (669, 439), (600, 444), (522, 436), (460, 434), (386, 435), (318, 435), (246, 442), (178, 440), (103, 437), (37, 440), (32, 374), (107, 372), (178, 373), (245, 371), (320, 370), (387, 371), (468, 372), (527, 367), (603, 370), (670, 369), (669, 296), (598, 296), (531, 302), (466, 306), (385, 304), (318, 304), (247, 305), (180, 302), (106, 305), (31, 306), (35, 235), (108, 234), (178, 234), (249, 234), (319, 233), (388, 234), (454, 236), (524, 237), (602, 234), (666, 233), (663, 166), (593, 171), (523, 169), (454, 166), (385, 167), (315, 166), (244, 167), (181, 167), (109, 168), (38, 165), (35, 100), (112, 103), (180, 106), (252, 101), (320, 99), (389, 98), (457, 96), (523, 97), (587, 101), (665, 98), (662, 33), (586, 32), (522, 32), (454, 33), (379, 31), (315, 34), (247, 36), (175, 36), (107, 38), (41, 38))
class Kubik:
    def brosok(self):
        a = random.randint(1, 6)
        return a
class Player(pygame.sprite.Sprite):
    def __init__(self, colorr):
        self.colorr = colorr
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((20, 20))
        self.image.fill(self.colorr)
        self.rect = self.image.get_rect()
        self.position = 0
    def update(self):
        a, b = Fon.koord[self.position]
        self.rect.center = (a, b)
        print(Kub.brosok())
        for i in range(Kub.brosok()):
            self.position += 1
            
# Создаем игру и окно
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("My Game")
clock = pygame.time.Clock()
all_sprites = pygame.sprite.Group()
player = Player(GREEN)
player1 = Player(RED)
Kub = Kubik()
all_sprites.add(player, player1)
# Цикл игры
running = True
while running:
    # Держим цикл на правильной скорости
    clock.tick(FPS)
    # Ввод процесса (события)
    for event in pygame.event.get():
        # check for closing window
        if event.type == pygame.QUIT:
            running = False
    # Обновление
    all_sprites.update()
    # Рендеринг
    screen.fill(BLACK)
    #screen.blit(background, background_rect)
    all_sprites.draw(screen)
    # После отрисовки всего, переворачиваем экран
    pygame.display.flip()
pygame.quit()
py.user.next
IgorDubkov
Оцифровываем игру Змейка. Бросаем кубик, бежим по полю, поднимаемся в лестницы, падаем по змеям.
Не получается сделать шаги по полю. Влезаю в цикл for и он сразу отрабатывается до конца хода. Как организовать движение по шагам?
Вот я немного поменял код. Теперь они движутся друг за другом снизу вверх.
  
#!/usr/bin/env python3
 
# Pygame шаблон - скелет для нового проекта Pygame
import pygame
import random
 
 
WIDTH = 700
HEIGHT = 700
FPS = 0.5
 
# Задаем цвета
WHITE = (255, 255, 255)
BLACK = (0, 0, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
 
# Загрузка всей игровой графики
background = pygame.image.load('pole.png')
background_rect = background.get_rect()
 
class Fon:
    koord = ((30, 665),
             (108, 653),
             (177, 647),
             (251, 648),
             (322, 642),
             (390, 641),
             (462, 648),
             (528, 653),
             (601, 659),
             (674, 656),
             (669, 584),
             (602, 583),
             (527, 577),
             (460, 569),
             (392, 573),
             (322, 571),
             (249, 577),
             (179, 576),
             (108, 573),
             (33, 582),
             (33, 509),
             (111, 510),
             (181, 508),
             (253, 505),
             (322, 503),
             (389, 501),
             (462, 505),
             (531, 503),
             (603, 515),
             (671, 515),
             (669, 439),
             (600, 444),
             (522, 436),
             (460, 434),
             (386, 435),
             (318, 435),
             (246, 442),
             (178, 440),
             (103, 437),
             (37, 440),
             (32, 374),
             (107, 372),
             (178, 373),
             (245, 371),
             (320, 370),
             (387, 371),
             (468, 372),
             (527, 367),
             (603, 370),
             (670, 369),
             (669, 296),
             (598, 296),
             (531, 302),
             (466, 306),
             (385, 304),
             (318, 304),
             (247, 305),
             (180, 302),
             (106, 305),
             (31, 306),
             (35, 235),
             (108, 234),
             (178, 234),
             (249, 234),
             (319, 233),
             (388, 234),
             (454, 236),
             (524, 237),
             (602, 234),
             (666, 233),
             (663, 166),
             (593, 171),
             (523, 169),
             (454, 166),
             (385, 167),
             (315, 166),
             (244, 167),
             (181, 167),
             (109, 168),
             (38, 165),
             (35, 100),
             (112, 103),
             (180, 106),
             (252, 101),
             (320, 99),
             (389, 98),
             (457, 96),
             (523, 97),
             (587, 101),
             (665, 98),
             (662, 33),
             (586, 32),
             (522, 32),
             (454, 33),
             (379, 31),
             (315, 34),
             (247, 36),
             (175, 36),
             (107, 38),
             (41, 38))
 
 
class Kubik:
 
    def brosok(self):
        a = random.randint(1, 6)
        return a
 
 
class Player(pygame.sprite.Sprite):
 
    def __init__(self, colorr, position=0):
        self.colorr = colorr
        pygame.sprite.Sprite.__init__(self)
        self.image = pygame.Surface((20, 20))
        self.image.fill(self.colorr)
        self.rect = self.image.get_rect()
        self.position = position
 
    def update(self):
        a, b = Fon.koord[self.position]
        self.rect.center = (a, b)
        print(Kub.brosok())
        # for i in range(Kub.brosok()):
        #     self.position += 1
        self.position += 1
 
 
# Создаем игру и окно
pygame.init()
pygame.mixer.init()
screen = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("My Game")
clock = pygame.time.Clock()
all_sprites = pygame.sprite.Group()
player = Player(GREEN, 0)
player1 = Player(RED, 1)
Kub = Kubik()
all_sprites.add(player, player1)
 
# Цикл игры
running = True
while running:
    # Держим цикл на правильной скорости
    clock.tick(FPS)
    # Ввод процесса (события)
    for event in pygame.event.get():
        # check for closing window
        if event.type == pygame.QUIT:
            running = False
    # Обновление
    all_sprites.update()
    # Рендеринг
    screen.fill(BLACK)
    screen.blit(background, background_rect)
    all_sprites.draw(screen)
    # После отрисовки всего, переворачиваем экран
    pygame.display.flip()
 
pygame.quit()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB