Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74

Как обойтись без переменной для результата boolean

09.04.2022, 22:19. Показов 1136. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
На 15 день изучения Питона, как и планировал, взялся переписывать свое первое домашнее задание "игра крестики-нолики" с использованием классов + более-менее разобрался с return. Вот тут есть первоначальный рабочий вариант.
Новый вопрос.
Создал класс, в нем функция check, которая должна возвращать boolean результат. Т.е. по идее мне достаточно поставить return на выполнении условия. Но не работает. А если вставляю переменные win = False и win=True, все работает.
Вот код с дополнительной и, как мне кажется, ненужной переменной:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# Класс Проверки условий победы 
 
class Matrix_Check:
    def __init__(self,matrix,steps):
        self.matrix = matrix
        self.steps = steps
        
    def check(self):
        win = False
        for x in range(8):
            if set(self.steps).issuperset(self.matrix[x]): # здесь же само условие возвращает Boolean
                win = True
                break
        return win
 
matrix0 = ({'1','2','3'},{'4','5','6'},{'7','8','9'},{'1','4','7'},{'2','5','8'},{'3','6','9'},{'1','5','9'},{'3','5','7'})
step_x = '1,4,7'
 
result = Matrix_Check(matrix0,step_x)
А вот примерно, как бы хотелось написать, но почему то не работает:
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
class Matrix_Check:
    def __init__(self,matrix,steps):
        self.matrix = matrix
        self.steps = steps
        
    def check(self):
        while False:
            return [x for x in range(8) if set(self.steps).issuperset(self.matrix[x])]
 
matrix0 = ({'1','2','3'},{'4','5','6'},{'7','8','9'},{'1','4','7'},{'2','5','8'},{'3','6','9'},{'1','5','9'},{'3','5','7'})
step_x = '1,4,7'
 
result = Matrix_Check(matrix0,step_x)
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
09.04.2022, 22:19
Ответы с готовыми решениями:

Как обойтись без объявления переменной
Добрый вечер. В методе generate требуется избавиться от переменной ref, добавив вместо этого в цикл for цикл while, который будет пробегать...

Почему не получается обойтись без переменной?
Всем привет, подскажите пожалуйста почему у меня выводится какая-то ерунда (четыре непонятных символа), хотел не создавать просто...

Можно ли обойтись без переменной в Readln?
Подскажите пожалуйста. Readln(FileSettings, DBFile); Readln(FileSettings, buf); DBFile := DBFile + buf; Можно ли сделать так,...

16
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
09.04.2022, 22:23
Python
1
2
3
4
5
 def check(self):
        for x in range(8):
            if set(self.steps).issuperset(self.matrix[x]):
                return True
        return False
1
Эксперт Python
 Аватар для unfindable_404
693 / 471 / 204
Регистрация: 22.03.2020
Сообщений: 1,051
09.04.2022, 22:29
Python
1
2
    def check(self):
        return any([set(self.steps).issuperset(self.matrix[x]) for x in range(8)])
или
Python
1
2
    def check(self):
        return bool([x for x in range(8) if set(self.steps).issuperset(self.matrix[x])])
1
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74
09.04.2022, 22:31  [ТС]
Блин...
Я так пробовал, но недосдвинул False, хотя уже знаю, что два return не работают корректно.
Спасибо.
Я на синтаксис в 5 раз больше времени трачу, чем на логику....
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.04.2022, 01:04
Цитата Сообщение от Viller_dm Посмотреть сообщение
Т.е. по идее мне достаточно поставить return на выполнении условия. Но не работает.
return немедленно завершает выполнение любого кода внутри функции. Н-е-м-е-д-л-е-н-н-о.


Цитата Сообщение от Viller_dm Посмотреть сообщение
что два return не работают корректно.
Если они расположены друг за другом в одном блоке.
К логическим веткам\блокам это никакого отношения не имеет. В коде может быть 150 условий и 150 return.
Ну, это если писать в специфическом стиле... Вообще, как правило, достаточно одного. Кроме случаев когда требуется досрочный выход.

Цитата Сообщение от Viller_dm Посмотреть сообщение
как мне кажется, ненужной переменной
Подобное упрощение ведет к обратному. К усложнению читабельности кода и усложнению его отладки.

Добавлено через 16 минут
Как пишет код новичок:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
def func(x):
    if x == 1:
        return "1"
    if x == 2:
        return "2"
    if x == 3:
        return "3"
    if x == 4:
        return "4"
    if x == 5:
        return "5"
    
    return "фигня"
Как пишет знающий логику и немного синтаксис:
Python
1
2
3
4
5
def func(x):
    if x in range(1,6):
        return str(x)   
   
    return "фигня"
или так:
Python
1
2
3
4
5
6
def func(x):
    result = "фигня"
    if x in range(1,6):
        result = str(x) 
   
    return result
Как пишет знающий логику и хорошо синтаксис:
Python
1
2
def func(x):
    return str(x) if x in range(1,6) else "фигня"
Однострочники хороши для простых условий. Но если начинать пытаться умещать туда более сложную логику, они перестают быть читабельными.
1
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74
10.04.2022, 12:41  [ТС]
Может кто подскажет, а то я сейчас опять 2 часа буду по мануалам лазить...
Есть класс, внутри есть несколько функций. Можно ли передавать параметры между функциями внутри класса? Или если функция отработала и предала данные наружу с помощью return, то данные стираются? Пока в голову приходит только что-то типа глобальной переменной внутри класса...

Пример. В классе одна функция принимает ввод с клавы и печатает его на экране, а вторая обрабатывает этот ввод. Как данные ввода передать во вторую функцию? Вот так работает, но будет ли это правильно или надо делать как-то иначе?
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Input_xo():
 
    vvod = 0  # как я понимаю, что-то типа глобальной переменной для данного класса
 
    def __init__(self,player):
        self.player = player
        
    def __str__(self):
        Input_xo.vvod = input('Введите свой ход (1-9):')
        return "Ход игрока '{}'".format(Input_xo.vvod)
    
    def vvod_xo(self,steps):
        steps[int(Input_xo.vvod)-1] = str(self.player)
        return steps
        
    #def vvod_plr(self):
        #stp_plr += vvod
    
    
player = 'x'
steps = [' '] * 9
stp = Input_xo(player)
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
10.04.2022, 14:19
Цитата Сообщение от Viller_dm Посмотреть сообщение
Есть класс, внутри есть несколько функций.
Методов.

Цитата Сообщение от Viller_dm Посмотреть сообщение
Или если функция отработала и предала данные наружу с помощью return, то данные стираются?
В функции - да. Но у методов есть поля для сохранения состояния.


Цитата Сообщение от Viller_dm Посмотреть сообщение
Можно ли передавать параметры между функциями внутри класса?
Можно. Через экземплярные свойства (те, что в __init__ обозначены).

Цитата Сообщение от Viller_dm Посмотреть сообщение
как я понимаю, что-то типа глобальной переменной для данного класса
Это атрибут уровня класса.
Обычное назначение данного поля инициализация глобального для всех экземпляров класса состояния. Но изменять это поле из экземпляров - плохая идея. У каждого экземпляра есть свои экземплярные поля.
И передача состояния внутри экземпляра должна осуществлять через них.

Добавлено через 1 минуту
Цитата Сообщение от Viller_dm Посмотреть сообщение
Как данные ввода передать во вторую функцию?
Через self.свойство
1
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74
10.04.2022, 22:03  [ТС]
Цитата Сообщение от Garry Galler Посмотреть сообщение
Можно ли передавать параметры между функциями внутри класса?
Можно. Через экземплярные свойства (те, что в __init__ обозначены).
Так это при получения данных для обработки в объект (класс) с внешнего по отношению к нему источника. А у меня переменная появляется уже внутри объекта (класса) при вводе с клавы в одном из методов. Если я ее прописываю в __init__, то получаю ошибку TypeError: __init__() missing 1 required positional argument: 'vvod'. Но у меня нет значения для этой переменной пока я не запущу метод класса.
Или мне надо передать vvod=0 не как глобальное состояние для экземпляров класса, а создать глобальную (точнее внешнюю для класса) переменную и передать ее в объект через __init__?

Добавлено через 7 минут
А.... понял....
Можно вот так:
Python
1
def __init__(self,vvod=0)
Добавлено через 3 часа 59 минут
Еще один вопрос знатокам. Ради удобства работы с другими классами пришлось заменить строковую переменную на список.
Вариант от уважаемого iSmokeJC
Python
1
2
3
4
5
 def check(self):
        for x in range(8):
            if set(self.steps).issuperset(self.matrix[x]):
                return True
        return False
работает только со строковой переменной step = '1,4,7'. Со списком step = [1,4,7] не работает. Ошибок не выдает, просто всегда возвращает False.
А вариант от уважаемого unfindable_404
Python
1
2
    def check(self):
        return bool([x for x in range(8) if set(self.steps).issuperset(self.matrix[x])])
корректно работает и со строкой и со списком.
Почему?
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.04.2022, 00:44
Одинаково работают (по крайне мере, со списками):
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> def check(steps):
        for x in range(8):
            if set(steps).issuperset([1,2,3,4]):
                return True
        return False
 
 
>>> check([1,4,7])
False
>>> def check2(steps):
        return bool([x for x in range(8) if set(steps).issuperset([1,2,3,4])])
 
>>> check2([1,4,7])
False
>>> check([1,2,3,4,5])
True
>>> check2([1,2,3,4,5])
True
>>>
Добавлено через 56 секунд
А со строкой - не советовал бы. Неизвестно, что там окажется кроме запятой.

Добавлено через 2 минуты
И потом - число 1 и строка "1" это два разных множества.
0
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
11.04.2022, 00:48
Viller_dm, так как все имена ваших классов представляют какие-то действия, возникает впечатление, что вы еще не до конца поняли что такое класс, и считаете его неким заменителем функции. На самом деле это не так. Класс - это некий набор данных, содержащий одновременно и функции для их обработки. Из него наружу торчат только интерфейсные функции, написанные в терминах этого класса, т.е. остальной программе не нужно знать как этот класс устроен внутри, и если его перепишут, оставив интерфейсные функции такими же, то внешняя программа этого не заметит. В вашем случае этот аспект не актуален, но таки логичнее классом назначить игровое поле крестиков-ноликов, а его методами - все функции по его обработке.
0
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74
11.04.2022, 00:50  [ТС]
У меня нет
Со строковой переменной возвращает True, со списком - False
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
class Matrix_Check:
    def __init__(self,matrix,steps):
        self.matrix = matrix
        self.steps = steps
        
    def check(self):
        for x in range(8):
            if set(self.steps).issuperset(self.matrix[x]):
                return True
        return False
 
matrix0 = ({'1','2','3'},{'4','5','6'},{'7','8','9'},
           {'1','4','7'},{'2','5','8'},{'3','6','9'},
           {'1','5','9'},{'3','5','7'})
step_x = '1,2,3'   # работает, возвращает True 
#step_x = [1,2,3]   # не работает, возвращает False
 
result = Matrix_Check(matrix0,step_x)
А в этом варианте корректно работает с обеими типами переменных
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Matrix_Check:
    def __init__(self,matrix,steps):
        self.matrix = matrix
        self.steps = steps
     
    def check(self):
        return bool([set(self.steps).issuperset(self.matrix[x]) for x in range(8)])
 
matrix0 = ({'1','2','3'},{'4','5','6'},{'7','8','9'},
           {'1','4','7'},{'2','5','8'},{'3','6','9'},
           {'1','5','9'},{'3','5','7'})
step_x = [1,2,3]
 
result = Matrix_Check(matrix0,step_x)
Может это заморочки Юпитер ноутбук?

Добавлено через 1 минуту
Цитата Сообщение от Garry Galler Посмотреть сообщение
И потом - число 1 и строка "1" это два разных множества.
Так я как раз этот момент и использую при проверке шаблонов. Не здесь, в другом классе.
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.04.2022, 01:03
Viller_dm,
Python
1
2
3
>>> set('1,2,3')
{',', '3', '1', '2'}
>>>
Если этот set сравнивать со множеством set(["1","2","3"]) то тоже будут два разных множества.
И set([1,2,3]) (он же {1,2,3}) никак не будет равен множеству {'1','2','3'}.
В общем надо что-то одно сравнивать.
Либо множество строк со множеством строк. Либо множества чисел со множеством чисел.
0
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74
11.04.2022, 01:34  [ТС]
Цитата Сообщение от idealist Посмотреть сообщение
так как все имена ваших классов представляют какие-то действия, возникает впечатление, что вы еще не до конца поняли что такое класс, и считаете его неким заменителем функции. На самом деле это не так. Класс - это некий набор данных, содержащий одновременно и функции для их обработки. Из него наружу торчат только интерфейсные функции, написанные в терминах этого класса, т.е. остальной программе не нужно знать как этот класс устроен внутри, и если его перепишут, оставив интерфейсные функции такими же, то внешняя программа этого не заметит. В вашем случае этот аспект не актуален, но таки логичнее классом назначить игровое поле крестиков-ноликов, а его методами - все функции по его обработке.
Я действительно очень много чего не понимаю. Я понимаю, что класс - объект. И понимаю, что у объекта масса вариантов использования. Но вот лично для себя пока ничего придумать не могу, кроме как "класс - это замена функции с более удобными возможностями ввода/вывода" Практика нужна, поэтому, во-первых, пытаюсь писать и функции и классы с методами, использовать их пока по своему видению. В ходе работы начинает что-то доходить. Пока приближенно. А во-вторых, вам тут понадоедаю со своими вопросами и примерами. Т.е. все как всегда - практика и "тыкание носом" в ошибки, желательно хоть с минимальным разъяснением.
Вот заканчиваю уже крестики-нолики с классами, причем не как в своем первом задании, где 2 человека играют друг с другом, а прога проверяет только критерии победы. Сейчас будет человек против компа. Все классы и функции написал, состыковать надо.
К моему стыду, у меня единственная функция - отображение игрового поля, все остальное - классы (ввод, проверки шаблонов, выбор ответного хода).
Кстати, вопрос: вызовов метода одного класса из другого класса следует избегать? Это уже связано с наследованием классов?
Правильнее классы и вся логика с обращением к методам "снаружи"?

Добавлено через 16 минут
Цитата Сообщение от Garry Galler Посмотреть сообщение
Если этот set сравнивать со множеством set(["1","2","3"]) то тоже будут два разных множества.
И set([1,2,3]) (он же {1,2,3}) никак не будет равен множеству {'1','2','3'}.
В общем надо что-то одно сравнивать.
Либо множество строк со множеством строк. Либо множества чисел со множеством чисел.
Я от строк ушел в списки и множества. Со списками удобнее работать, а множества удобно сравнивать. Может неправильно, но мне так легче. А в варианте сетов вида {'1',2,3}, т.е. int и str вместе, я как раз использую эту разницу для поиска свободной ячейки. Работает
0
Эксперт Python
5438 / 3859 / 1215
Регистрация: 28.10.2013
Сообщений: 9,552
Записей в блоге: 1
11.04.2022, 02:28
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
matrix0 = ({'1','2','3'},{'4','5','6'},{'7','8','9'},
           {'1','4','7'},{'2','5','8'},{'3','6','9'},
           {'1','5','9'},{'3','5','7'})
 
 
 
class Matrix_Check:
    def __init__(self,matrix,steps):
        self.matrix = matrix
        self.steps = steps
        
    def check(self):
        for x in range(8):
            if set(self.steps).issuperset(self.matrix[x]):
                return True
        return False
    
    def check2(self):
        return bool([x for x in range(8) if set(self.steps).issuperset(self.matrix[x])])

Python
1
2
3
4
5
6
7
# этот set никогда не будет суперсетом для множеств из matrix
# потому что мы сравниваем разные типы множеств: список\множество чисел и список\множество строк
step_x = [1,2,3]
 
result = Matrix_Check(matrix0,step_x)
print(result.check())
print(result.check2())
Code
1
2
False
False

Python
1
2
3
4
5
6
# здесь все корректно
step_x = ["1","2","3"]
 
result = Matrix_Check(matrix0,step_x)
print(result.check())
print(result.check2())
Code
1
2
True
True

Python
1
2
3
4
5
6
7
8
9
10
11
# а здесь  - небольшая лажа. Несмотря на то, что она похожа на правду...
# строка '1,2,3'  превращается в set {',', '3', '1', '2'}
# с одной стороны он является суперсетом для {'1','2','3'}, но у нас есть лишний элемент в виде запятой, 
# который не должен участвовать в сравнении, так как нам важны только числа, а не мусор между строк.
 
 
step_x = '1,2,3' 
 
result = Matrix_Check(matrix0,step_x)
print(result.check())
print(result.check2())
Code
1
2
True
True
Python
1
2
3
4
5
6
7
8
9
#  Этот вариант вообще неверный для той логики, которую выражают другие  варианты
# Потому что здесь создается непустой список в любом случае. 
# А непустой список в Python всегда равен True   
 
def check(self):
        return bool([set(self.steps).issuperset(self.matrix[x]) for x in range(8)])
 
 
print(bool([set(["1","2"]).issuperset(["1","2","3"])]))
Code
1
True
1
3750 / 1944 / 612
Регистрация: 21.11.2021
Сообщений: 3,706
11.04.2022, 07:56
Цитата Сообщение от Viller_dm Посмотреть сообщение
Я понимаю, что класс - объект.
Не, класс - это тип. А объект класса - это переменная этого типа. От обычной переменной она отличается тем, что в программе не должно быть функций по ее обработке, - она уже имеет их внутри себя.

Добавлено через 13 минут
Цитата Сообщение от Viller_dm Посмотреть сообщение
Кстати, вопрос: вызовов метода одного класса из другого класса следует избегать?
Ну, в ООП-программах объекты классов, (то бишь переменные) взаимодействуют друг с другом, вызывая интерфейсные функции друг друга. К примеру, объект Студент обращается к объектам Преподаватель или Автобус, к примеру, вызывая их интерфейсные функции, типа Преподаватель.принять_зачет() или Автобус.довезти_до_университета().

Добавлено через 12 минут
Цитата Сообщение от Viller_dm Посмотреть сообщение
у меня единственная функция - отображение игрового поля, все остальное - классы (ввод, проверки шаблонов, выбор ответного хода).
Не, это в корне неверная конструкция. Класс моделирует некоторое существительное в контексте решаемой задачи, а не глагол.

Добавлено через 2 часа 23 минуты
Т.е. отличие ООП-программы от процедурной в том, что в процедурной существуют переменные и функции для их обработки, а в ООП-программе - только переменные (то бишь объекты классов), которые общаются между собой, вызывая интерфейсные функции друг друга, а функций в классическом понимании в программе нет.
1
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74
11.04.2022, 09:28  [ТС]
Garry Galler,
Спасибо. Все таки объяснение с примерами заменяет день чтения мануалов...
Самое интересное, нельзя сказать, что я этого не знал. Опыта у меня нет в сегодняшнем программировании - перерыв больше 30 лет. С другой стороны, язык PL/1, с которого я начинал (и закончил ) компилируемый и тип переменных жестко объявляется до появления самой переменной, т.е. всю эту кухню я прекрасно понимаю. Да, не знаю особенностей конкретной реализации, но понимаю.
Плюс ваши объяснения ткнули носом еще в один момент. Я недодумал логику и алгоритмы программы. Например, множества у меня это неизменные шаблоны для сравнения. Так на фиг я их оставил символьными, если собрался работать с целочисленными списками? Частично можно списать это на то, что ряд методов реализации "находится" и меняется в процессе работы над кодом, - начинал я со строк и множеств. Причем у меня же есть решение с совместным использованием цифр и символов в виде цифр в тех же шаблонах, именно с целью разделения данных. Короче, туплю кое-где....

idealist,
Спасибо. Концепцию понял. Полезно.
Надо продумать и, похоже, многое перекомпоновать...
0
225 / 15 / 3
Регистрация: 07.04.2022
Сообщений: 74
16.04.2022, 10:45  [ТС]
Как шутили в моей молодости: "Читал пейджер, много думал...."

Читал всю неделю учебники и документацию. Что-то новое для себя, естественно, нашел. Перекомпановал классы очень серьезно, постарался сильно сократить их количество, загнав все методы близкие по функциональности и использующие общие атрибуты в единые классы. Да и в самих методах что-то переписал по-другому.

Есть вопрос по переменным.
Как их правильнее именовать? Одинаковое имя для глобальных переменных и атрибутов экземпляра класса это правильно или нет?
(Я в курсе, что экземпляр класса имеет собственную копию переменной - атрибута экземпляра класса, и значение, с которым он работает через нее, будет отличаться от значений аналогичных переменных других экземпляров класса.)
Писать мне так точно удобнее.... но как это будет работать и насколько правильно концептуально?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
16.04.2022, 10:45
Помогаю со студенческими работами здесь

Как обойтись без метода Свернуть() для подсчет уникальных строк в ТЗ
ТЗ.Колонки.Добавить("Колзаписей"); ТЗ.Колонки.Добавить("ДлинаАдреса"); ТЗ.ЗаполнитьЗначения(1,"Колзаписей"); ...

Clean Architecture (MVP), как обойтись без Context для Data Layer
На сколько я понял разделение по слоям, мы должны избегать использования Context где бы то ни было, кроме View. Я понимаю, что четких...

Как определить корректность заданного возраста (Тип результата boolean)
Возраст может принимать значения в диапазоне от 1-120. Вводимые значения 25,0,120,121... Как бэ в принципе всё понятно, что надо сделать,...

Как обойтись без x
Есть алгоритм (см. прикрепления) Нужно обойтись без x Речь идет о замене элементов находящихся на четных и нечетных местах. (поменять...

Как обойтись без x
Есть алгоритм (см. прикрепления) Нужно обойтись без x Речь идет о замене элементов находящихся на четных и нечетных местах. (поменять...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Камера 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. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru