Подскажите, чем можно определить монитор для каждого окна?
Помню что всё просто, но не могу вспомнить.
Выбор монитора Окна
Сообщений 1 страница 5 из 5
Поделиться103.02.2024 15:01:44
Поделиться304.02.2024 10:41:11
Я так понял нет возможности сразу указать окну на каком рабочем столе появится по середине.
Но можно узнать сколько рабочих столов и просто учесть длину всего графического пространства для расположения окна.
Поделиться404.02.2024 11:43:20
Спасибо!
Блин, век живи, век учись ))) То-есть Macro можно перехватить операторы PureBasic
Procedure _OpenWindow..... Macro OpenWindow : _OpenWindow : EndMacro
Поделиться510.02.2024 11:12:33
....Прямо, ваш запрос, под мою задачу
У меня тут вообще свалилось спасение ситуации.
Вообщем как-то с другом разговаривали три месяца назад, типа в кафе можно лотерею сделать с использованием бочонков "Лото". Ну пообщались и забыли.
Он как-то там живёт, в кафе суетится, а я как-то отдельно.
Тут захожу на днях, вижу что уже приступили к реализации и срок то всего неделя. Студент на Питоне создал графический генератор билетов, просто исполняемый EXE файл, а в целом игровой системы для ТВ и тому подобного нет.
Тут-то и свалилось на меня всё. В итоге за пару дней сделал генератор ЛОТО билетов под печать А4, всё как надо генерирует)))) правильно.
И за пару дней графический интерфейс.
Использовал адаптер HDMI в антенный провод (формат DVB-C - кабельное ТВ) и на 4 монитора транслировал второй экран ПК. Управление всем этим из другого окна на первом экране.
Получилось круто, но я уже стар для такого спортивного программирования.
Вот тест на одном мониторе:
А вот такой генератор хаоса получился у меня, использовал криптографический рандомайзер (но и он не даёт нужного хаоса):
Студент немного спёкся с этим Питоном, одно дело найти код для генерации этих билетов, другое дело сделать его правильным - и тут нужны мозги особой математики.
Оказывается в ЛОТО билетах каждый вертикальный ряд имеет 9 цифр, а последний 10 цифр. К каждом горизонтальном ряду не более 5 цифр и 4 свободные ячейки. Не должно быть 3 пустых вертикальных ячейки.
Но хлеще всего генерировать два билета в одном. Точней ЛОТО билеты имеют 2шт. сразу и в них нет совпадения цифр. Я от души оторвался в Qbasic на PureBasic
Проект не коммерческий, но зато зачётно показал возможности PureBasic в аварийных экстремальных ситуациях. А то мне говорят: "Я генератор карточек лото за пол часа написал" - ага, написал, стырил с тырнета и переделать ещё больше у него времени ушло.
Если кому надо ГЕНЕРАТОР 100 КАРТОЧЕК ЛОТО по 90 цифр и два билета в руки, угощайтесь (на 50 человек игры):
;---| Генератор Тиража
generator:repair:
For p=0 To 8
For o=0 To 2
For n=0 To 99
bilet(n,p,o)=0
Next n
Next o
Next p
haos=0
ok=1
n=0
o=0
p=0
n=0
p1=0
o1=0
n1=0
While n<100
o=0
While o<3
p=0
While p<9
ok=1
While ok<>0 ;Проверка числа на совпадение в билете
Select p
Case 0
gen=CryptRandom(8)
gen+1
Case 1
gen=CryptRandom(9)
gen+10
Case 2
gen=CryptRandom(9)
gen+20
Case 3
gen=CryptRandom(9)
gen+30
Case 4
gen=CryptRandom(9)
gen+40
Case 5
gen=CryptRandom(9)
gen+50
Case 6
gen=CryptRandom(9)
gen+60
Case 7
gen=CryptRandom(9)
gen+70
Case 8
gen=CryptRandom(10)
gen+80
EndSelect
;If P=0
; gen=CryptRandom(8)+1
; gen=gen+p*10
; Else
; gen=CryptRandom(8)+1
;EndIf
;Debug "Ячейка "+Str(p)+" Число "+Str(gen)
If gen>90
Debug "ERR"
End
EndIf
;Debug "Колонка: "+Str(p)+" Генератор: "+Str(gen)
;gen=gen+1
;------- Проверяем совпадения
For n1=n-1 To n ;Каждые два билета без повторений цифр
For o1=0 To 2
For p1=0 To 8
If n1<0 ;Если первый билет, генерируем с проверкой одного билета
If bilet(n,p1,o1)=gen
ok=2
haos+1
;Debug "Билет: "+Str(n1)+" Колонка: "+Str(p1)+" Генератор: "+Str(gen)
EndIf
Else
If bilet(n1,p1,o1)=gen
ok=2
haos+1
;Debug "Билет: "+Str(n1)+" Колонка: "+Str(p1)+" Генератор: "+Str(gen)
EndIf
EndIf
Next p1
Next o1
Next n1
If ok=1 ;Если нет совпадений
ok=0 ;Выход из цикла
bilet(n,p,o)=gen
Break
Else ;Если есть совпадения
ok=1 ;Генерируем число дальше
EndIf
Wend
p+1
Wend
o+1
Wend
n+1
Wend
Debug "Кол-во совпадений при генерации:" +Str(haos)
;If haos>220
;Goto repair
; EndIf
;------- Убрать ненужные числа
For n=0 To 99 ;Номер обрабатываемого билета
ok=1
While ok<>0
;Копируем шаблон для генерации пустых клеток
For p=0 To 8
For o=0 To 2
bilet_space(p,o)=bilet(n,p,o)
Next o
Next p
;Генерация пустых клеток
For o=0 To 2
p=0
While p<4
gen=CryptRandom(8)
If bilet_space(gen,o)<>0
bilet_space(gen,o)=0
p+1
EndIf
Wend
Next o
;Проверяем на условие отсутствия пустых 3х вертикальных клеток
For p=0 To 8
If bilet_space(p,0)=0 And bilet_space(p,0)=bilet_space(p,1) And bilet_space(p,1)=bilet_space(p,2)
ok=2
EndIf
Next p
If ok=1 ;Если всё ок, то продолжаем дальше (сохраняем билет)
For p=0 To 8 ;Копируем шаблон для генерации пустых клеток
For o=0 To 2
bilet(n,p,o)=bilet_space(p,o)
Next o
Next p
ok=0
Break
Else ;Если не прошло условие, то восстанавливаем билет и пытаемся ещё раз
ok=1
EndIf
Wend
Next n
;------- Проверка наличия всех цифр в билетеnumm=0
tm=1
While tm<90
ok=1
For n=0 To 99
For o=0 To 2
For p=0 To 8
;Debug Str(bilet(n,p,o))+"="+Str(tm)
If bilet(n,p,o)=tm
ok=0
numm+1
tm+1
EndIf
If tm=91
Break 4
EndIf
Next p
Next o
Next n
If ok=1
Debug "Нет цифры: " + Str(tm)
tm+1
EndIf
Wend
Debug "Присутствуют цифр: "+Str(numm)If numm<90 ;Переделываем если нет всех цифр в билетах
Goto repair
EndIf
;------- Проверка цифр в рядах (наличие всего десятка)For p=0 To 8
tm=1
For n=0 To 99
For o=0 To 2
If bilet(n,p,o)=tm+(p*10)
;Debug Str(tm+(p*10))+" Билет "+Str(n+1)
numm=tm+(p*10)
tm+1
EndIf
Next o
Next n
Next p
Debug nummIf numm<90
Debug "Не прошло проверку цифр десятка в ряду"
Goto repair
EndIf
;------- Совпадение цифр в билете 2 проверка (контроль)
tm=0
For n=0 To 99
For p=0 To 8
For o=0 To 2
For p1=0 To 8
For o1=0 To 2
If bilet(n,p,o)=bilet(n,p1,o1) And bilet(n,p,o)<>0 And (p<>p1 And o<>o1)
;Debug "Билет № "+Str(n)+" Число: "+Str(bilet(n,p,o))
tm+1
EndIf
Next o1
Next p1
Next o
Next p
Next n
If tm>0 ;Если есть совпадения в цифрах, переделываем всю генерацию
Debug "Билет № "+Str(n+1) +" брак. Совпадений: "+Str(tm)
Goto repair:
EndIf
Debug "Совпадений не найдено"
;End
SetWindowColor(#okno_generator, RGB(110,0,0))
ReturnDim bilet.a(100,9,3) ;Массив с билетами
Dim bilet_space.a(9,3)
Global p,p1
Global triger.a
Global o,o1
Global i
Global n,n1
Global list_a4
Global x,y
Global corr
Global gen
Global ok
Global numm
Global tm
Global haos
Отредактировано Ev3658 (10.02.2024 11:18:26)