LINUX.ORG.RU

OpenKlest Light Edition 2.0.0

 openklest, ,


0

1

Вышла вторая версия онлайн-игры OpenKlest Light Edition (2.0.0).

OpenKlest Light Edition — это игра-кроссворд с открытым исходным кодом (C++/JavaScript) от российского разработчика. Код распространяется под лицензией GNU GPLv2. Интерфейс оптимизирован под смартфоны.

Возможности:

  • отгадывание кроссвордов с любого устройства, подключённого к сети;
  • проверка правильности отгадывания.

Сейчас игра содержит 5 600 кроссвордов. Всего будет 65 536 кроссвордов.

>>> Подробности

★★☆

Проверено: Falcon-peregrinus ()
Последнее исправление: cetjs2 (всего исправлений: 6)

Ответ на: комментарий от slovazap

По порядку:
Клёст-кроссворд - оригинал C++/Qt4 десктоп
OpenKlest - порт Клёст-кроссворда на Lazarus десктоп
OpenKlest Light Edition - лёгкая версия OpenKlest - cgi веб.
Ровно как WebMoney Keeper Classic и Light WM.
buratino

xwicked ★★☆
() автор топика
Последнее исправление: xwicked (всего исправлений: 1)
Ответ на: комментарий от PavelRyzhov

Я сделаю последний коммит, залью исходник и отпишусь.

xwicked ★★☆
() автор топика
Ответ на: комментарий от batekman

Уж пользователь Windows XP знает, что такое удобный интерфейс.

Я понимаю что венда натаскивает пользователя на особые рефлексы которые со временем он начинает воспринимать даже как удобные, и когда в другой системе, по нажатию на «переместить фаил в корзину» он у него сразу перемещается по назначению, пользователь начинает бугуртить от того что у него не спросили действительно ли он хочет переместить фаил в корзину.

Только удобство это когда интерфейс подстраивают под пользователей а не пользователь к его неестественному поведению придра--тся

uin ★★★
()

Всего будет 65 536 кроссвордов

А потом переполнение? Это такое захардкоженное ограничение?

CYB3R ★★★★★
()
Ответ на: комментарий от uin

Интерфейс Windows XP и 7 достаточно прост, логичен, последователен и интуитивно понятен. Многие программы тех лет были в меру настраиваемыми, однообразными, образуя собой консистентную среду. Было в них и немало изъянов. Но в дальнейшем вместо исправления недочётов и ошибок все стали пилить какие-то современные интерфейсы, то есть, как на мобильных устройствах: у каждой программы — своя структура, свой вид элементов управления, своя философия. Только на мобильных устройствах это нужно было не от хорошей жизни — не скажу про Android, но в J2ME нативный интерфейс на многих телефонах выглядел некрасиво и был неудобен, особенно если большую часть кнопок заменял огромный сенсорный экран. (Например, у меня есть LG KP500, в нём в Java-приложениях, использующий нативный интерфейс, для прокрутки списка нужно целиться в маленькие кнопки на краю экрана.)

А на компьютерах лепить ущербные телефонно-минималистичные интерфейсы стали, похоже, из-за перенасыщения рынка ПО. И если терпеливое отношение к такому положению дел ещё можно понять, то радоваться и обзывать тех, кто не побежал пользоваться плодами актуальных трендов, ретроградами и утятами — стокгольмский синдром в чистом виде.

Если говорить о подстраивании интерфейса под пользователей, то как раз нужно учитывать пожелания бывших пользователей Windows XP, потому что их очень много. А, образно выражаясь, менять тормоз и газ, не предупреждая об этом — отсутствие элементарной культуры обращения с пользователем.

batekman ★★★
()
Ответ на: комментарий от anonymous

Да, следующая версия будет OpenKlest A (Android) или OpenKlest M (mobile) переписанный на QML/QtQuick.
А потом я займусь тестом.

xwicked ★★☆
() автор топика
Ответ на: комментарий от anonymous

«Обыкновенное чудо» от фабрики «Cлавянка» оооочень люблю...

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

При чем тут вообще variant, это вообще составной тип, я тебе говорю что char не дает никаких преимуществ над int кроме экономи памяти и векторных операций. Внутри в процессоре АЛУ все равно оперирует над интами, а для байт делает дополнительную работу - sign extend. При чем в некоторых случаях ты еще получишь принудительный sign extend от компилятора. Так что алгоритмы на байтах будут работать не быстрее чем на интах, а в некоторых случаях даже медленнее.

pftBest ★★★★
()
Ответ на: комментарий от pftBest

Регистр - это определенный участок памяти внутри самого процессора, от 8-ми до 32-х бит длиной, который используется для промежуточного хранения информации, обрабатываемой процессором. Некоторые регистры содержат только определенную информацию.

Регистры общего назначения - EAX, EBX, ECX, EDX. Они 32-х битные и делятся еще на две части, нижние из которых AX, BX, CD, DX - 16-ти битные, и деляется еще на два 8-ми битных регистра. Так, АХ делится на AH и AL, DX на DH и DL и т.д. Буква «Н» означает верхний регистр.

Так, AH и AL каждый по одному байту, АХ - 2 байта (или word - слово), ЕАХ - 4 байта (или dword - двойное слово). Эти регистры используются для операций с данными, такими, как сравнение, математические операции или запись данных в память.

Регистр СХ чаще всего используется как счетчик в циклах.

АН в DOS программах используется как определитель, какой сервис будет использоваться при вызове INT.

Осмелюсь, предположить, что я таки прав. А вариант задействует сразу 2-3 регистра, увеличив количество тактов на обработку, снижая СКОРОСТЬ!

xwicked ★★☆
() автор топика
Последнее исправление: xwicked (всего исправлений: 2)
Ответ на: комментарий от xwicked

Обьясню для непонятливых, посмотри на эти две простые функции скомпилированные с максимальными оптимизациями и посчитай число инструкций.

char addc(char a, char b) {
   return a + b;
}

int addi(int a, int b) {
  return a + b;
}
0000000000000000 <_addc>:
   0:	55                   	push   %rbp
   1:	48 89 e5             	mov    %rsp,%rbp
   4:	40 00 fe             	add    %dil,%sil
   7:	40 0f be c6          	movsbl %sil,%eax
   b:	5d                   	pop    %rbp
   c:	c3                   	retq   
   d:	0f 1f 00             	nopl   (%rax)

0000000000000010 <_addi>:
  10:	55                   	push   %rbp
  11:	48 89 e5             	mov    %rsp,%rbp
  14:	8d 04 37             	lea    (%rdi,%rsi,1),%eax
  17:	5d                   	pop    %rbp
  18:	c3                   	retq
pftBest ★★★★
()
Ответ на: комментарий от Psych218

Правда я пробовал на десктопе, возможно на смартфоне такое поведение удобнее.

не очень удобно. эта куча звёзд вместо букв, которую каждый раз выделяй или стирай....

samy_volosaty ★★★★★
()
Ответ на: комментарий от xwicked

Это я привел результат из clang, а вот что делает компилятор gcc 6:

0000000000000000 <_addc>:
   0:	8d 04 3e             	lea    (%rsi,%rdi,1),%eax
   3:	c3                   	retq   
   4:	66 66 66 2e 0f 1f 84 	data16 data16 nopw %cs:0x0(%rax,%rax,1)
   b:	00 00 00 00 00 

0000000000000010 <_addi>:
  10:	8d 04 37             	lea    (%rdi,%rsi,1),%eax
  13:	c3                   	retq
Он еще умнее и заранее знает что байтовые операции медленные и потому генерирует абсолютно одинаковый код в обоих случаях на интах

pftBest ★★★★
()
Ответ на: комментарий от xwicked

Спешл фо ю, как нить на неделе - другой выделю троечку часов и покажу на livecoding, что это действительно так и есть

xSudo ★★★
()
Ответ на: комментарий от xwicked

Да, есть такие паттерны в программировании.

Это _анти_паттерн. Называется «preliminary optimization»

Опять же для скорости и чтобы не было длинныx списков.

Есть проблемы в скорости? Чем плохи длинные списки?

Мне кажется, кое-кто начитался про битовые оптимизации, забыв про алгоритмические.

segfault ★★★★★
()
Последнее исправление: segfault (всего исправлений: 2)

Всего будет 65 536

захордкодил, маладец.

BigAlex ★★★
()
Ответ на: комментарий от samy_volosaty

Здесь я решил сделать для удобства чтения пересечений, когда вместо звезды есть буква, так проще будет отгадать.
P.S. Я купил себе книжку Адама Фримана JQuery 2.0 за 2 300(!)р., потом сделаю так, чтобы в диалоге отображалось слово в ячейках, как в сетке с заполненными буквами-пересечениями, тогда звёздочки будут не нужны.

xwicked ★★☆
() автор топика
Ответ на: комментарий от pftBest

Я как-то уже писал, что я сравню потом клиента и сервер на «высокоуровневом» PHP 5, а потом скажу зря я это делал или нет.

xwicked ★★☆
() автор топика
Ответ на: комментарий от pftBest

Просто я чувствую, что если меня убедят в том, что я зря всё так минимализировал, то потом будут писать про то, что вообще всё это можно было сделать на php, хотя стоп... уже писали про за 6 дней клепания аналогов. :)

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

Воу, воу, полегче. Не 6 дней, а 6 часов. Пойми меня правильно, я не пытаюсь тебя дискредитировать, унизить, оскорбить и всё такое, наоборот молодец, что-то делаешь, что-то пишешь. Может ты крутой специалист и у тебя там всё оптимизировано, я не знаю. Но посмотри на интерфейс, неужели тебе не хочется сказать: «Какого чёрта, Карл?»

xSudo ★★★
()
Ответ на: комментарий от xSudo

Что я вижу: не прокручивается кроссворд, если выбирается вопрос из списка; в диалоге ввода слова постоянно выскакивает чекбокс с текстом «не давать создавать дополнительные окна». Что ещё?

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

Любить или ненавидить php это твое личное дело. А вот знать как работает процессор должен каждый программист, независимо от языка. Потому что на каком бы ты языке не писал, оно в конечном итоге все исполняется в виде машинного кода на процессоре, а он не любит работать с байтами, ему сложить два 64битных числа проще чем два 8битных.

pftBest ★★★★
()
Ответ на: комментарий от xwicked

Спрошу ещё: «Почему нельзя использовать переменные типа вариант(Variant) в любом языке?»

define тип Variant, но в любом случае в языке можно использовать все что в нем есть, если уметь.

loz ★★★★★
()
Ответ на: комментарий от pftBest

процессоре, а он не любит работать с байтами, ему сложить два 64битных числа проще чем два 8битных.

Ну теперь всё стало ясно....

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

Сам диалог ввода слова, выбор вопроса селектом, зелёная галочка, зелёная кнопка входа, не адаптивность кроссворда.

xSudo ★★★
()
Ответ на: комментарий от xSudo

С телефона заходил? Если нет, то для компа будет позже добавлен вариант интерфейса.

xwicked ★★☆
() автор топика

16 бит под счетчик кроссвордов отвели?
2 по 8 бит

Лоллирую чет

loz ★★★★★
()
Ответ на: комментарий от xwicked

Ну теперь всё стало ясно....

Мне трудно читать скрытый смысл в твоих коментариях, потому просто предположу что тебе «всё стало ясно» (без троеточия). Если все еще есть сомнения, почитай например эту статью https://m.habrahabr.ru/post/309796/ , тут описаны оптимизации которые все еще актульны, а то твоя книжка про MSDOS и байтовые регистры устарела лет на 40.

pftBest ★★★★
()
Ответ на: комментарий от pftBest

такие как ты говорят, что sata-дискам не нужно охлаждение и современные литий-ионные аккумуляторы можно подзаряжат включенными... я сам буду все проверят.

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

такие как ты

Отличное сравнение, ты это так сказал как будто я понятия не имею о чем говорю, и вообще вешаю тебе лапшу на уши. Я же привел тебе в доказательство пример вывода компиляторов где все видно, если тебе этого мало, я замерил производительность на своем компьютере используя google benchmark framework

Run on (4 X 3500 MHz CPU s)
2016-09-13 18:08:12
Benchmark                     Time           CPU Iterations
-----------------------------------------------------------
bench_int32/256/85          544 ns        544 ns    1314582
bench_int32/256/128         637 ns        637 ns    1151637
bench_int32/1024/85        2205 ns       2205 ns     328594
bench_int32/1024/128       2490 ns       2490 ns     286619
bench_int32/4k/85          8661 ns       8661 ns      80936
bench_int32/4k/128         9723 ns       9723 ns      71620
bench_char/256/85           982 ns        982 ns     712571
bench_char/256/128         1171 ns       1171 ns     597692
bench_char/1024/85         3897 ns       3897 ns     179588
bench_char/1024/128        4680 ns       4680 ns     149322
bench_char/4k/85          15553 ns      15553 ns      45028
bench_char/4k/128         18709 ns      18708 ns      37371
bench_int64/256/85          523 ns        523 ns    1332484
bench_int64/256/128         595 ns        595 ns    1176930
bench_int64/1024/85        2059 ns       2059 ns     340032
bench_int64/1024/128       2352 ns       2352 ns     297613
bench_int64/4k/85          8206 ns       8206 ns      85283
bench_int64/4k/128         9376 ns       9376 ns      74661
Вот ссылка на полный код бенчмарка, тестируется простая фунция с википедии про числа Грея. Как видишь в худшем случае просадка в два раза по сравнению с int64.

pftBest ★★★★
()
Ответ на: комментарий от pftBest

Ты уже пытаешься меня убедить, а это не хорошо. У меня 2 книги по программированию на ассемблере, 1 книга по дизассемблированию. одна по написанию компиляторов и одна по программированию микроконтроллеров. Я просто сказал, что я всё буду перепроверять и всё.
А чтобы не приводить бессмысленные коды, можно просто посмотреть, что все ОСи 64-битные требуют больше ресурсов и тупая 32-битная программа работает чуть дольше, собранная 64-битным компилятором, хотя это означает что компиляторы пишут дятлы... :D

xwicked ★★☆
() автор топика
Ответ на: комментарий от xwicked

всё буду перепроверять

Когда все перепроверишь, не забудь запостить сюда кусок кода на C который работает быстрее когда тип char вместо int на x86_64, буду ждать.

ОСи 64-битные требуют больше ресурсов

Если ты ресурсом называешь память, то да, требуют больше, но при этом и работают быстрее. (Опять же, если не веришь мне, то вот сравнение производительности относительно свежей Ubuntu 16.04 на респектабельном ресурсе)

32-битная программа работает чуть дольше, собранная 64-битным компилятором, хотя это означает что компиляторы пишут дятлы

Покажи эту твою программу, я думаю она и на 32битной системе работает медленнее чем могла бы. Возможно ее написал какой нибудь дятел который любит понапихать везде байтовых переменных и других неоптимальных конструкций.

pftBest ★★★★
()

Отдели разные языки. Тогда может сразу и увидишь где ошибка.

Мне как-то посоветовали, но как это сделать? Сделать жабаскрипт-код в виде функции с кучей параметров, будет ли это по Фен Шую? Насколько это будет удобно?

xwicked ★★☆
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.