- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 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
void MyZKbMain::keyPressEvent(QKeyEvent* k)
{
QPixmap pm; pm.load("ruleta_usr.png");
ZConfig Num(QString("numeros.cfg"), true);
ZConfig Hist(QString("historial.cfg"), true);
switch (k->key())
{
case 0x1046: //Boton Verde
break;
case 0x1030: //Boton Verde
calcular=0;
reboot = new ZMessageDlg("zRoulette",
QString("Sistema Ubeda 0.5\nBasado en el Sistema de Cuadros\n\nwww.developermoto.com/es\nwww.modmymoto.com\n\n(C)2009 RacingLocura07, CepiPerez"),
(ZMessageDlg::MessageDlgType)2, 0, this,"about", true, 0);
reboot->setTitleIcon(pm); reboot->show();
break;
case 0x1031: //Boton Rojo
calcular=0;
reboot = new ZMessageDlg("zRoulette", "Desea salir?",
(ZMessageDlg::MessageDlgType)1, 0, this,"about", true, 0);
reboot->setTitleIcon(pm); reboot->show();
if(reboot->exec()==1) { exit(); }
else { update(); break; }
case 0x1012: //Tecla de Navegacion De Izquierda
calcular=0;
if (current > 1 ) { --current; update(); break; } else { break; }
case 0x1013: //Tecla de Navegacion De Arriba
calcular=0;
if ( current > 3 ) { ------current; update(); break; } else { break; }
case 0x1014: //Tecla de Navegacion De Derecha
calcular=0;
if (current < 36 ) { ++current; update(); break; } else { break; }
case 0x1015: //Tecla de Navegacion De Abajo
calcular=0;
if (current < 34 ) { ++++++current; update(); break; } else { break; }
case 0x1038: //Softkey Izquierda
calcular=0;
reboot = new ZMessageDlg("zRoulette", "Desea reinciar la Ruleta?", (ZMessageDlg::MessageDlgType)1, 0, this,"about", true, 0);
reboot->setTitleIcon(pm); reboot->show();
if(reboot->exec()==1) { system("rm numeros.cfg"); system("rm historial.cfg"); current = 1; jugadas = 0; lista.clear(); update(); break; }
else { update(); break; }
case 0x103a: //Softkey Derecha
int temp = Hist.readNumEntry ( QString("HISTORIAL"), QString("18"), 0 );
if ( temp != 0 ) {
reboot = new ZMessageDlg("zRoulette", "Desea limpiar las jugadas dejando las ultimas 18 solamente?",
(ZMessageDlg::MessageDlgType)1, 0, this,"about", true, 0); reboot->setTitleIcon(pm); reboot->show();
if(reboot->exec()==1) {
for ( int l=1; l<37; ++l) { Num.writeEntry ( QString("NUMEROS"), QString("%1").arg(l), QString("0") ); }
for ( int j=1; j<19; ++j) {
int temp = Hist.readNumEntry ( QString("HISTORIAL"), QString("%1").arg(j), 0 );
if ( temp > 0 ) { Num.writeEntry ( QString("NUMEROS"), QString("%1").arg(temp), QString("1") ); }
} calcular=1; update(); break;
} else { break; }
} else {
reboot = new ZMessageDlg("zRoulette", "Deben haber mas de 18 bolas jugadas para el reinicio parcial.",
(ZMessageDlg::MessageDlgType)2, 0, this,"about", true, 0); reboot->setTitleIcon(pm); reboot->show(); break;
}
case 0x1004: //Boton Central
valortemp = Num.readNumEntry(QString("NUMEROS"), QString("%1").arg(current), 0 );
if ( valortemp < 1 ) { valortemp=0; } ++valortemp;
Num.writeEntry(QString("NUMEROS"), QString("%1").arg(current), valortemp);
int lugar=0; for ( int j=18; j>0; --j)
{ int temp = Hist.readNumEntry ( QString("HISTORIAL"), QString("%1").arg(j), 0 ); if ( temp==0 ) { lugar=j; } }
if ( lugar > 0 ) {
Hist.writeEntry ( QString("HISTORIAL"), QString("%1").arg(lugar), QString("%1").arg(current) );
} else {
for ( int j=1; j<18; ++j) {
int temp = Hist.readNumEntry ( QString("HISTORIAL"), QString("%1").arg(j+1), 0 );
Hist.writeEntry ( QString("HISTORIAL"), QString("%1").arg(j), QString("%1").arg(temp) );
}
Hist.writeEntry ( QString("HISTORIAL"), QString("18"), QString("%1").arg(current) );
}
calcular=1;
update();
}
}
Разработчики из солнечной Аргентины. Кусочек кода из кастомного "лаунчера" для телефонов Motorola на платформе MotoMAGX (Linux 2.6.10, Qt 2.3.8, gcc 3.4.3). АДИЩЕ С ЦАРСКИМИ АНРОЛЛАМИ: https://github.com/crutchwalkfactory/motocakerteam/blob/master/Projects/MotoDesk/MyZKbMain.cpp
Что интересно, это всё как-то работало и даже довольно мило выглядело: http://exlmoto.ru/wp-content/Images/AOne/1.gif
Kozel 26.06.2016 14:07 # +2
На данной платформе 3 инкремента быстрее, чем сложение с 3?
inkanus-gray 26.06.2016 14:13 # 0
cykablyad 26.06.2016 14:27 # +5
bormand 26.06.2016 14:28 # 0
LispGovno 26.06.2016 14:30 # 0
А чего не хватило?
> Мы
С женой?
bormand 26.06.2016 14:33 # +3
С подушкой же :3 Под "мы" участники ГК имелись в виду.
Ну для красоты нужно же чтобы операторы были по одну сторону, или все слева или все справа. Круглые и квадратные скобки сразу отлетают, внутри них придётся писать что-то помимо операторов. Бинарные операторы тоже отлетают. Постфиксных операторов очень мало. Вот и остаются префиксные ~ ! + - ++ -- * и &. Но из-за ++ приходится добавлять пробелы, некрасиво...
LispGovno 26.06.2016 14:49 # 0
Прохладная стори
a.op1().op2().op(3);
bormand 26.06.2016 14:51 # +2
inkanus-gray 26.06.2016 14:56 # 0
bormand 26.06.2016 15:01 # +1
LispGovno 26.06.2016 15:09 # 0
bormand 26.06.2016 15:11 # +2
3.14159265 26.06.2016 19:13 # 0
Возвращаем себя, и только меняем внутренний стейт в зависимости от аргумента.
Своеобразный флюентно-монадический конечный автомат.
inkanus-gray 26.06.2016 15:59 # +3
В крестах ещё и стрелка перегружается? Осталось только ввести перегрузку точки с запятой и фигурных скобок.
CHayT 26.06.2016 17:34 # +2
Пример: https://gist.github.com/bishboria/8568581
Vindicar 27.06.2016 10:25 # +3
defecate-plusplus 27.06.2016 11:09 # +3
inkanus-gray 28.06.2016 15:22 # 0
Soul_re@ver 28.06.2016 15:26 # +2
2) Для пользовательских типов перегрузить можно и *
Так что это просто отсутствие единого стиля в команде
kurwa 28.06.2016 22:41 # 0
dxd 29.06.2016 10:32 # +2
Antervis 29.06.2016 11:33 # 0
2. operator -> должен возвращать T*
3. возвращаемые значения должны указывать на один и тот же объект
И да спасет тебя бог от программиста, который найдет в твоём коде несоответствие одному из этих трех правил.
roman-kashitsyn 29.06.2016 12:21 # 0
> 2. operator -> должен возвращать T*
> И да спасет тебя бог от программиста
Я нашёл несоответствие в STL, в std::vector<bool>. Кого должен спасти бог?
Antervis 29.06.2016 12:41 # 0
roman-kashitsyn 29.06.2016 15:10 # 0
Я нашёл несоответствие STL твоим "правилам".
operator* у итератора vector<bool>, у которого value_type = bool, возвращает волшебный прокси-bit reference, а не T&, как ты написал.
> А то сдается мне кое-кто плохо вчитывался в стандарт
Я даже знаю, кто. К примеру, для итераторов r* обязан возвращать Iterator::reference, а не T&. r-> возвращает Iterator::pointer, что бы это ни было, а не T*.
defecate-plusplus 29.06.2016 16:25 # 0
речь лишь, что некий тип T со своими модификаторами (ссылка, указатель на) у operator * и operator -> должен быть одним и тем же T
не стоит в operator * возвращать "foo *", а в operator -> возвращать "bar &", это расстроит маньяка, который почитает твой код после тебя
(кстати, даже в гцц всё норм в этом плане, за исключением, что вместо T & референсом служит временный объект-враппер - https://gcc.gnu.org/onlinedocs/libstdc++/libstdc++-html-USERS-4.2/structstd_1_1__Bit__iterator.html)
roman-kashitsyn 29.06.2016 16:52 # 0
Не контейнера, а итератора.
> вместо T & референсом служит временный объект-враппер
Так о том и речь. @Antervis утверждает, что в качестве возвращаемых значений всегда должны быть указатели и ссылки, а по стандарту могут быть произвольные прокси, лишь бы код компилировался.
defecate-plusplus 29.06.2016 17:22 # 0
диалог ушёл куда-то не туда
итератор вектора<бул> вообще operator -> не перегружает, что бы ему с ним делать
roman-kashitsyn 29.06.2016 17:32 # 0
Я нигде и не писал, что он его перегружает :)
Но ничто не мешает возвращать из operator-> любую шнягу, у которой перегружена стрелка — компилятор раскрутит всю цепочку, пока не увидит указатель.
An expression x->m is interpreted as (x.operator->())->m for a class object x of type T if T::operator->()
exists and if the operator is selected as the best match function by the overload resolution mechanism
Soul_re@ver 29.06.2016 17:56 # 0
По тому же стандарту, vector<bool> вообще не Container, кстати.
Soul_re@ver 29.06.2016 14:20 # +2
Antervis 29.06.2016 15:08 # 0
Soul_re@ver 29.06.2016 15:27 # 0
Soul_re@ver 28.06.2016 09:59 # +1
inkanus-gray 28.06.2016 15:23 # 0
Soul_re@ver 28.06.2016 15:27 # +2
inkanus-gray 28.06.2016 15:31 # 0
Soul_re@ver 28.06.2016 15:47 # +4
1024-- 28.06.2016 16:29 # 0
Antervis 28.06.2016 17:30 # +1
Antervis 29.06.2016 11:38 # 0
defecate-plusplus 29.06.2016 11:44 # +2
bormand 29.06.2016 17:54 # 0
> как потом обращаться к методам
Очередная гонка вооружений?
3.14159265 26.06.2016 19:11 # 0
На js тоже так можно, монада с цепочками бесконечных свойств.
brainfuck.plus.minus.left.right
Или даже так
brainfuck.['+-.*']
bormand 26.06.2016 15:04 # 0
bf::p::m::d::p::o::run();
[code]
bormand 26.06.2016 15:15 # 0
3.14159265 26.06.2016 19:14 # +1
3.14159265 26.06.2016 19:15 # 0
>Ну для красоты нужно же чтобы операторы были по одну сторону, или все слева или все справа.
Брейнфак же игнорирует неизвестные символы => можно сделать крестопрограмму, которая выполнится любым интерпретатором.
Вот думаю, может ли препроцессор подобавлять нули в выражение чтоб оно было корректно с точки зрения С++?
Какой-нить emojii-brainfuck
bormand 26.06.2016 19:37 # +1
Предлагаешь скрыть код на брейнфаке в коде на крестах? Сурово.
3.14159265 26.06.2016 19:41 # 0
http://govnokod.ru/20272#comment336648
Если кресты полное днище, то думаю переменную _ можно заменить на невидимый символ.
1024-- 26.06.2016 19:40 # +2
>> bf->p->p->m->d->p->l->m->r->u->o; // ++-[+<->].
>> А вот как сделать bf.p.m.d.o.run() - ума не приложу...
> А препроцессором нельзя извернуться?
gost 27.06.2016 11:00 # 0
>> А препроцессором нельзя извернуться?
> #define p p()
И правда, работает.
https://ideone.com/CVOyS7
bormand 26.06.2016 19:44 # 0
Кстати, а есть ли интерпретаторы bf на чистом препроцессоре, без си?
gost 27.06.2016 11:03 # 0
Вряд-ли. Препроцессор-то, ЕМНИП, не Тьюринг-полный, в отличие от.
guesto 27.06.2016 14:31 # +1
3.14159265 26.06.2016 19:26 # +1
bormand 26.06.2016 19:38 # 0
3.14159265 26.06.2016 19:43 # 0
>Если кресты полное днище, то думаю переменную _ можно заменить на невидимый символ.
А   нельзя использовать в качестве переменной?
Да и вообще, разве в уникоде символов мало?
>Ну вот эти _ как мусор смотрятся.
Зато на выходе идентично работающая в С++ и bf программа.
bormand 26.06.2016 19:45 # +3
3.14159265 26.06.2016 19:46 # 0
А мы можем как-нить сделать
#define + _+
#define - _-
bormand 26.06.2016 20:05 # 0
inkanus-gray 26.06.2016 20:06 # +2
http://govnokod.ru/11549
http://govnokod.ru/18440
Только бы создателям крестостандартов на глаза не попался заброшенный E4X...
Antervis 26.06.2016 17:56 # 0