неділя, 17 листопада 2013 р.

Программа для игры в Змейку на BASIC



Вот программа для игры в Змейку (60 строк, это без появляющихся на поле препятствий)

Сначала задаём начальные значения переменных:
Размеры поля и сторона клетки в пикселях:
10 maxx = 30
20 maxy = 15
30 side = 20

Выделяем память для клеток змейки
40 DIM zx(100)
50 DIM zy(100)

Начальная длина змейки
60 zl = 3

Задаём начальные координаты клеткам змейки (напомню, головой считается клетка с самым большим номером).
70 zx(1) = 14
80 zx(2) = 15
90 zx(3) = 16
100 zy(1) = 7
110 zy(2) = 7
120 zy(3) = 7

Скорость змейки (едет вправо)
130 vx = 1
140 vy = 0

Координаты пищи
150 fx = 20
160 fy = 3

Выделяем память для препятствий (в этой программе препятствий не будет, но если нам понадобится их включить, уже будет заготовка)
170 DIM px(100)
180 DIM py(100)
190 pl = 0

Готовимся рисовать
200 SCREEN 9
210 CLS

Пробегаем по всем клеткам змейки и рисуем квадраты на экране
220 FOR n = 1 TO zl
230 LINE ((zx(n) - 1) * side, (zy(n) - 1) * side)-(zx(n) * side, zy(n) * side), 1, BF
240 NEXT n

Рисуем квадрат в клетке с пищей
250 LINE ((fx - 1) * side, (fy - 1) * side)-(fx * side, fy * side), 2, BF

Слушаем клавиатуру. Клавиши WASD – смена направления движения, Q – выход
Обратите внимание, что несколько команд можно поместить в одну строку, разделяя их двоеточиями.
260 a$ = INKEY$
270 IF a$ = "a" OR a$ = "A" THEN vx = -1: vy = 0
280 IF a$ = "d" OR a$ = "D" THEN vx = 1: vy = 0
290 IF a$ = "w" OR a$ = "W" THEN vx = 0: vy = -1
300 IF a$ = "s" OR a$ = "S" THEN vx = 0: vy = 1
301 IF a$ = "q" OR a$ = "Q" THEN GOTO 570

Следующие 2 строки содержат пустой цикл. Они нужны, чтобы змейка не двигалась на экране современного компьютера слишком быстро
302 FOR i = 1 TO 1000
303 NEXT i

Находим, в каких координатах будет голова змейки после очередного шага
310 x1 = zx(zl) + vx
320 y1 = zy(zl) + vy

Если голова попадает на еду, то увеличиваем длину змейки и переходим на строку 390
330 IF (x1 = fx) AND (y1 = fy) THEN zl = zl + 1: GOTO 390

Строки 340-380 будут выполняться, если змейка ничего не съела. В этом случае мы должны стереть с экрана хвостовой квадрат и сдвинуть все координаты квадратов змейки на место предыдущих
340 LINE ((zx(1) - 1) * side, (zy(1) - 1) * side)-(zx(1) * side, zy(1) * side), 0, BF
350 FOR k = 1 TO zl - 1
360 zx(k) = zx(k + 1)
370 zy(k) = zy(k + 1)
380 NEXT k

Теперь задаём новые координаты для головы змейки и рисуем её в новых координатах.
390 zx(zl) = x1
400 zy(zl) = y1
410 LINE ((x1 - 1) * side, (y1 - 1) * side)-(x1 * side, y1 * side), 1, BF

Проверяем условия поражения. Сначала – столкновение со стенками экрана
420 IF x1 = 0 OR y1 = 0 OR x1 > maxx OR y1 > maxy THEN GOTO 570

Затем – столкновение со своим туловищем
430 FOR k = 1 TO zl - 1
440 IF x1 = zx(k) AND y1 = zy(k) THEN GOTO 570
450 NEXT k

Если еда съедена, её нужно передвинуть
460 IF (x1 = fx) AND (y1 = fy) THEN GOTO 470 ELSE GOTO 260

Берём случайную клетку на поле
470 fx = 1 + INT(RND * maxx)
480 fy = 1 + INT(RND * maxy)

Проверяем, не занята ли уже эта случайная клетка туловищем змейки. Если занята – берём другую случайную клетку
490 FOR k = 1 TO zl
500 IF fx = zx(k) AND fy = zy(k) THEN GOTO 470
510 NEXT k

И рисуем еду в новом положении
520 LINE ((fx - 1) * side, (fy - 1) * side)-(fx * side, fy * side), 2, BF

Основной цикл программы завершается, возвращаемся к слушанию клавиатуры
560 GOTO 260

Сюда мы попадём в случае проигрыша. Сообщим игроку его счёт (длину змейки)
570 PRINT "Game over. Your score: "; zl

Вот и всё, игра готова.

Подумайте самостоятельно:
1)      Как сделать так, чтобы клетки ан поле были мельче?
2)      Как рисовать пищу не квадратом, а кругом?
3)      Как сделать так, чтобы змея могла двигаться ещё и по диагонали?
4)      Как запретить змее менять своё направление движения на строго противоположное?
5)      Как сделать так, чтобы со временем змея двигалась быстрее?
6) Как сделать так, чтобы после заврешения игры человека спрашивали, хочет ли он сыграть заново?
7)      И, если ответите на это, будете вообще молодцы: - в каких местах программы и какие правки нужно сделать, чтобы в игре появились препятствия?

середа, 6 листопада 2013 р.

Рубеж по информационным технологиям



Работа состоит из 4 заданий.

I Перевести число из десятичной системы в двоичную (7 вариантов)
1) 82; 2) 42; 3) 199; 4) 51; 6) 97; 7) 37
II Перевести число из двоичной системы в десятичную (8 вариантов)
1) 110110; 2) 101110; 3) 100110110; 4) 11010101; 6) 1001011; 7) 1100110; 8) 10010101
III Нарисовать фигуру (6 вариантов)



IV Нарисовать узор (с использованием циклов) (9 вариантов)
Как выбрать свой вариант?
Ваш номер в журнале
Задание I
Задание II
Задание III
Задание IV
1
1
1
1
1
2
2
2
2
2
3
3
3
3
3
4
4
4
4
4
5
5
5
5
5
6
6
6
6
6
7
7
7
1
7
8
1
8
2
8
9
2
1
3
9
10
3
2
4
1
11
4
3
5
2
12
5
4
6
3
13
6
5
1
4
14
7
6
2
5
15
1
7
3
6
16
2
8
4
7
17
3
1
5
8
18
4
2
6
9
19
5
3
1
1
20
6
4
2
2
21
7
5
3
3
22
1
6
4
4
23
2
7
5
5
24
3
8
6
6
25
4
1
1
7
26
5
2
2
8
27
6
3
3
9
28
7
4
4
1

понеділок, 22 квітня 2013 р.

Blogspot для 12 роты

Зарегистрироваться в сервисе Blogspot.com
Придумать тематику блога (она может быть произвольной)
Придумать название и зарегистрировать блог
Выбрать один из предлагаемых шаблонов оформления
Написать несколько постов, в том числе:
  • Пост с текстом с разным форматированем
  • Пост с картинкой
  • Пост с встроенным видео из YouTube
  • Пост со ссылкой "Читать далее"
  • Пост с гиперссылкой на другой сайт
Добавить в блог виджет Поиска
Изменить ширину блога до 1000 пикселей

понеділок, 15 квітня 2013 р.

Чемпионат по интернет-поиску

Сегодня с 11-50 в блоге начнётся чемпионат по интернет-поиску.

Для начала в комментариях к этому посту напишите свои фамилии, группу и номер компьютера, за которым сидите (считайте с компьютера, ближайшему к двери по часовой стрелке). Специально регистрироваться не надо, можно выбрать "Анонимный" при отправке комментария, главное - чтобы в тексте его всё, что нужно было написано.

Затем следите за главной страницей блога. Там раз в 5 минут будут появляться вопросы, ответы на которые нужно найти в интернете.
Ответ на вопрос должен состоять из:
  • собственно ответа,
  • ссылки на сайт, на котором вы его нашли, и
  • номера компьютера за которым сидите.

Отправляйте ответы в комментарии к постам с вопросами.

Ваши комментарии до конца пары будут скрыты. Если комментарий отправится успешно, в блоге покажется сообщение: "Ваш комментарий будет опубликован после одобрения."
Подсчёт очков ведётся по схеме:
1й правильный ответ - 12 баллов,
2й правильный ответ - 10 баллов,
3й и т.д.: 9, 8, 7, 6, и т.д. баллов.

середа, 3 квітня 2013 р.

Pascal для 61 роты


Начнём использовать массивы

program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
 //создадим массив из 10 элем элементов
var a:array[1..10] of integer;
i:integer;

begin
  Writeln('Pishem v massiv chisla on 1 do 10');
  //пробегаем по элементам массива
  for i := 1 to 10 do
   begin
     a[i] := i;//заполняем его числами от 1 до 10
   end;

  Writeln('Vot, chto v massive:');
  //теперь выведем их на экран
  for i := 1 to 10 do
   begin
     Writeln(a[i]);//выводим элементы на экран
   end;

 Readln;//Обязательная команда, чтобы программа не закрывалась внезапно
end.

Работает? Теперь будем расширять. Новая программа будет заполнять массив случайными числами, находить их сумму, максимальное из них и минимальное



program Project2;
{$APPTYPE CONSOLE}
uses
  SysUtils;
 //создадим массив из 10 элем элементов
var a:array[1..10] of integer;
  i:integer;
  s:integer;
  mx:integer;
  mn:integer;
begin
  Writeln('Pishem v massiv sluchajnye chisla');
  //пробегаем по элементам массива
  for i := 1 to 10 do
   begin
     a[i] := random(100);//заполняем его случайными числами от 0 до 99
   end;

  Writeln('Vot, chto v massive:');
  //теперь выведем их на экран
  for i := 1 to 10 do
   begin
     Writeln(a[i]);
   end;

//ищем сумму. вначале она равна 0
  s:=0;

  for i := 1 to 10 do
   begin
     s:=s+a[i];
   end;
  Writeln('summa ravna ', s);

//Теперь ищем максимум и минимум. Вначале они оба равны первому элементу
 mx:=a[1];
 mn:=a[1];



for i := 2 to 10 do
   begin
//Если находится элемент, который больше текущего максимума текущий масимум поднимаем
      if a[i] > mx then
        mx := a[i];
//Если находится элемент, который меньше текущего минимума текущий минимум поднимаем

      if a[i] < mn then
        mn := a[i];


   end;
  Writeln('minimum raven ', mn);
  Writeln('maximum raven ', mx);



 Readln;
end.

Подумайте самостоятельно, как сделать так, чтобы эти 10 чисел не генерировал компьютер, а вводил человек.


Blogspot для 42 роты

Задание:
Зарегистрироваться на сервисе Blogspot.com
Придумать название своего туристического агентства (для менеджеров по туризму) или авиакомпании (для менеджеров международных перевозок). Создать блог о своём предприятии.

Создать несколько страниц, заполнить их придуманной информацией о компании. Опубликовать несколько новостей (только, чтобы не вводить в заблуждение посетителей, укажите где-нибудь, что это курсантский проект)

С конце семестра среди блогов будет выведен рейтинг, чем больше окажется посещаемость, тем больше баллов.

MathCad для 60 роты