Я не программист, просто в школе была информатика. Алгоритм писался по принципу "лень", так что не оптимизирован вовсе. 1 - "огонь", 2 - "лёд", 3 - "копьё", 4 - "щит", 5-"разрушение", 6 и 7 - изгнание огня и льда (имитируем фокус Дэвида с ифритом), 8 - сжигание, 9 - прожигание, 10 - замораживание CLS RANDOMIZE TIMER 'рандомное компьютерное заклинание stz = INT(RND(1) * 2) + 1 fbz = INT(RND(1) * 2) + 3 fdz = INT(RND(1) * 6) + 5 fzz = INT(RND(1) * 10) + 1 IF stz = 1 THEN SELECT CASE fdz CASE 7 fdz = 6 CASE 10 fdz = 9 END SELECT
ELSEIF stz = 2 THEN SELECT CASE fdz CASE 6 fdz = 7 CASE 8, 9 fdz = 10 END SELECT END IF 'вывод на экран PRINT stz, fbz, fdz, fzz 'команда ввода INPUT st, fb, fd, fz 'задаём массив DIM A(10, 10) 'таблица коэффицентов взаимодействий форм друг с другом. DATA 1,1,1,1,1,1,0,2,2,0 DATA 1,1,1,1.1,1,1,0,0,2 DATA 1,1,.1,1.1,1.1,1,1,1,1.2,1 DATA .8,1,.9,.1,.9,1,1,1.1,.1,1.1 DATA 0.8,1.2,1,1,.1,1,1,1,1,1 DATA 5,0,.5,1.2,1,1,0,5,5,0 DATA 0,5,.5,1.2,1,0,1,0,0,5 DATA 0,1,1.2,1.2,1,.3,1,.1,.1,1 DATA 0,1,.2,2,1,.3,1,.1,.1,1 DATA 1,0,.8,.4,1,1,.3,1,1,.1 'считали массив FOR i = 1 TO 10 FOR j = 1 TO 10 READ A(i, j) NEXT j NEXT i 'Проверяем совпадение формы-цели со стихией, с любой формой в заклинание (указание стихии или действия в качестве цели читаем как соответсвующее заклинание: огонь - огненное заклинание, разрушение - разрушающее заклинание) IF (fz = stz) OR (fz = fbz) OR (fz = fdz) THEN Bon = 1 ELSE Bon = 0 'Обсчитываем эффективность базиса заклинание, соответствие стихии, формы базы и формыдействия, если st=1 fd=10 (огонь замораживание) то Basis = 0 Basis = A(st, fb) * A(st, fd) * A(fb, fd) * A(st, stz) * A(fb, fbz) 'Аналогично для надстройки, срабатывает если есть совпадение между формой-целью и любой формой у противника Nadst = Bon * (A(st, fz) * A(fb, fz) * A(fd, fz)) 'Считаем эффективность заклинания игрока IF (st > 2) OR (fb < 3) OR (fb > 4) OR (fd < 5) OR (fz < 1) OR (fz > 10) THEN Zacl = -1 ELSE Zacl = Basis * (1+Nadst)
'Тоже для компьютера IF (fzz = st) OR (fzz = fb) OR (fzz = fd) THEN Bon = 1 ELSE Bon = 0 Basis = A(stz, fbz) * A(stz, fdz) * A(fbz, fdz) * A(stz, st) * A(fbz, fb) Nadst = Bon * (A(stz, fzz) * A(fbz, fzz) * A(fdz, fzz)) IF (szt > 2) OR (fbz < 3) OR (fbz > 4) OR (fdz < 5) OR (fzz < 1) OR (fzz > 10) THEN Zaclz = -1 ELSE Zaclz = Basis * (1+Nadst)
'Выводим PRINT Zaclz PRINT Zacl END Пример: комп.:2 3 10 5 (ледяное копьё замораживающее разрушающие закл.) моё :1,4,5,9 (огненный щит разрушающий прожигающие закл.) эффективность комп.: 4.62 эффективоть моё: 0.81
_________________ Удачливые наследуют землю. О.Э.Костерин.
Последний раз редактировалось Мир 13 янв 2011, 17:50, всего редактировалось 2 раз(а).
|