четверг, 7 октября 2010 г.

свой сапер

Решил написать программку для своего развлечения. Выбор пал на известный и многими любимый сапер. Итак немного про логику игра, если есть кто то кто не знает о чем я то читаем просвещаемся. Итак инициализируется поле размером N на M. На нем случайном порядке выброшены "мины". Каждая клетка показывает число мин которые окружают данную клетку. Если попалась мина то игра закончена. И так приступим к написанию кода.
Для начала инициализируем 3 целых числа N, M и K, что соответственно означает число строк, столбцов и мин на поле. Инициализируем несколько массивов размерности N на M. Bool массив характеризует наличие или отсутствие мины на клетке, а второй показывает число мин с которыми эта клетка граничит, естественно логично что она несет значение unsigned int.

bool matr [N][M];
unsigned int nummatr [N][M];
short unsigned int mas[N][M];
for (int i =0 ;i<>
{
for (int j=0;j<>
matr[i][j] = 0;
nummatr[i][j] = 0;
mas[i][j] =0;
}
}
while(k){
int n = rand()%N;
int m = rand()%M;
if (!matr[n][m])
{
matr [n][m] = true;
int iF = max (0,n-1);
int iL = min (n+1,N-1);
int jF = max (0,m-1);
int jL = min (m+1,M-1);
for (int i = iF;i <>
for (int j = jF;j <>
nummatr[i][j]++;
k--;
}
}


как видно для начала все массивы заполняются 0
далее пока есть возможность бросить мину на поле мы ее бросаем.
отсекаем нужное нам множество клеток где будут увеличены счетчики. В итоге мы получили игровое поле.

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

вот что получилось


void recsearch(short unsigned int *mas,bool *matr,unsigned int *nummatr,int N,int M, int i,int j)
{
if ((nummatr[i*N+j]==0)&&(mas[i*N+j]==0)){
//cout<<
mas[i*N+j] = 1;
if (i>0)
recsearch(mas,matr,nummatr,N,M,i-1,j);
if (i
recsearch(mas,matr,nummatr,N,M,i+1,j);
if (j
recsearch(mas,matr,nummatr,N,M,i,j+1);
if(j>0)
recsearch(mas,matr,nummatr,N,M,i,j-1);
}
if ((nummatr[i*N+j]>0)&&(mas[i*N+j]==0)){
mas[i*N+j] = 1;
}
}


далее добавляем в main такой участок

int i,j;
while (k>0){
cin>>i>>j;
if (matr[i][j]){
cout<<"boom"<
return 0;
}
recsearch (mas[0],matr[0],nummatr[0],N,M,i,j);
for (i =0;i<>
for (j=0;j<>
if (mas[i][j]){
cout<<<'>
}
else cout<<"- ";
}
cout<
}
}

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

вторник, 28 сентября 2010 г.

DNS проблемы и решения

Столкнулся недавно с такого рода проблемой, как отказ работы DNS провайдера.Для начала опишем структуру DNS и вообще что такое DNS.
DNS (англ. Domain Name System — система доменных имён) — компьютерная распределённая система для получения информации о доменах. Чаще всего используется для получения IP-адреса по имени хоста (компьютера или устройства), получения информации о маршрутизации почты, обслуживающих узлах для протоколов в домене (SRV-запись).
Распределённая база данных DNS поддерживается с помощью иерархии DNS-серверов, взаимодействующих по определённому протоколу.
Вот что говорит нам по этому поводу wikipedia. Хотя что по факту мы получаем. А получаем мы простую иерархическую систему. И так вы открываете в браузере какую либо ссылку. Что происходит далее.
Ваша ссылка поступает на обработку к DNS вашего провайдера. Он приводит в соответствие значение имени и адреса. Если же он не способен провести сопоставление, то тогда он обращается к корневым DNS серверам, или к корневым DNS серверам зон интернета (com, org, ru и т.д.). А что получится если DNS сервер не работает? А получится то что у вас не будет ни грамма интернета.
Решение проблемы очевидно. Необходимо сменить DNS сервер. Но при этом данная проблема может нести определенные трудности для человека незнающего или малоопытного.
Если вы работаете через ADSL интернет с использованием режима роутер то отключите в настройка использование DNS серверов.
Если вы работаете на Unix подобных машинах то правьте файл /etc/resolv.conf
просто добавьте строки вида nameserver adress_dns
если вы работаете под Виндой поганой то вам необходимо править настройки вашей сети используя классический менеджер настройки сети.
Ну и теперь самое главное. Какие DNS сервера следует использовать. Мой совет вам пользоваться открытыми DNS серверами от Google 8.8.8.8 и 8.8.4.4. Эти сервера дают приемлемою скорость и при это избавляют вас от траты нервов на вашего провайдера.

Удачи вам на просторах Интернета.

четверг, 23 сентября 2010 г.

Habr лег

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

среда, 22 сентября 2010 г.

Microsoft Ark Keyboard

Борьба с Эльдорадо закончилась моей победой, а как следствие и скидкой в 1000р. Моим трофеем стала клавиатура Microsoft Ark. Клавиатура более чем шедевральна, но обо всем по порядку.
Для начала внешний вид.
Клавиатура красива и ярка, но глянец. Глянец выглядит очень красиво на витрине, но после пользования клавиатурой буквально пол часа весь лоск потерялся. Оригинальные дизайнерские находки видны и в форме клавиатуры. Она изогнута в виде арки, что в принципе соответствует названию модели.
Эргономика клавиатуры и хороша и плоха одновременно. С одной стороны клавиши имею мягкий и плавный ход. Они удобно разнесены друг от друга. Так что промахов при наборе на ней не много. Радует также и большой пробел и не маленький Enter. Но вот досадная переработка компании Microsoft. Вместо названия Enter у нас написано Ввод. Конечно нас может быть принимают за идиотов, хотя я, возможно, сильно придирчив. А вот то что реально неудобно в этой клавиатуре так это блок стрелок. Он выполнен в виде единой кнопки. Причем эта кнопка мало отлична от размера обычных клавиш. Еще не очень радует то что для применения некоторых клавиш надо зажимать Fn так например клавиши F1-F6 при нажатии на Fn превращаются в F7-F12. Радует что остался небольшой мультимедийный блок в правом верхнем углу клавиатуры.
В копилку устройства можно добавить еще и малый вес устройства. Клавиатура действительно легкая. Ее практически не чувствуешь у себя на коленях. Но при этом она не скользит на столе, очень качественные прорезиненные ножки дают о себе знать.
Легкий вес и малый размер делают эту клавиатуру очень удобной для транспортировки. Кстати тут не лишним оказался и конверт в котором лежала клавиатура. Она легко и не принужденно может поместиться как в сумке для ноутбука , в портфеле, так и в нагрудном кармане куртки (по крайней мере в моем поместилась). Приемник клавиатуры потерять очень сложно. Хотя это приемник очень маленький. В клавиатуре предусмотрена специальная ниша для приемника. По видимому за ней спрятан магнит, так что потерять приемник будет сложно, это вам не прищепка для приемника которая уже через неделю будет разболтана или вообще сломается.
Но за все приходится платить, и платить придется не мало. Розничная цена сего продукта составляет 2500 рублей, или в окрестности это суммы.

    В общем к плюсам клавиатуры можно выделить:
  • малый вес
  • компактный размер
  • внешнюю красоту
  • удобство печати
  • тихий набор (почти бесшумный)
  • малый ход клавиш
  • нишу для приемника

    Минусы:
  • Глянец!!!
  • стрелки в виде одной клавиши реально неудобны, это заставляет пользоваться мышкой.
  • цена

ну и в конце пару фото.




понедельник, 20 сентября 2010 г.

Эльдорадо... волна гнева


Сегодняшним днем началась акция от Эльдорадо 1000 возможностей. Было огромное желание приобрести на них какой нибудь кошерный продукт. Выбор пал на клавиатуру. Какую клавиатуру если повезет вы узнаете в будущем. Но вот мои желания разбились об скалы человеческой тупости.
Подойдя к кассе мне с радостью сказали что все будет прекрасно и они с удовольствием примут от меня платеж. Я передал денежку, купон на 1000р. и карточку магазина эльдорадо. Проведя какие то манипуляции девочка вскрикнула "ой", и из аппарата полезла огромная простыня чеков. Она подозвала своих "боевых подруг" и "ой" уже сказали хором. Мне ничего толком не сообщили а только продолжили ойкать и говорить подождать минуту.
Шли минуты, часы, годы...
Нет конечно я не позволил отнять у себя столь много времени. Подождав 20 минут я попросил позвать менеджера, на что мне сказали то что он ушел 5 минут назад. Тогда я спросил что же мне надо делать теперь. Мне сказали что они не знают, и попросили придти завтра. Ну что же если наше завтрашнее рандеву будет безрезультатно, то Эльдорадо потеряет своего покупателя навеки.
И шут с их фантиком в 1000 рублей.

суббота, 18 сентября 2010 г.

Спасибо Umputun'у

Сегодня Umputun в своем твитере опубликовал очень полезную вещь. Спасибо вам Евгений. Это шпаргалка для программистов или интересующихся программированием с классификацией паттернов и их кратким описанием. Мне она очень помогла бы на экзамене по программированию. Я присоединяюсь к раздаче. забирайте

Еще один Dock


Первый мой пост был посвящен изменениям внешнего вида Ubuntu. В этом посте я расскажу что изменилось теперь. Для начала начнем с того что теперь я использую док отличный от обычного. А именно я использую docky Данный док более чем удобен и к тому же еще и не раздражающе быстр. На сайте проекта вы найдете много интересных вещей и надстроек. Надеюсь что вы будете пользовать его с таким же удовольствием как и я)))