Уведомления

Группа в Telegram: @pythonsu

#1 Июль 5, 2011 19:13:16

Nekron
От:
Зарегистрирован: 2011-07-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

На шахматной доске стоят черный король и былые ладья и слон(ладья бьет по вертикали и горизонтали, слон бьет по диагоналям). Проверить есть ли угроза королю и если есть, то от кого именно. Учесть возможность защиты(например ладья не бьет через слона и т.д)



Офлайн

#2 Июль 5, 2011 21:37:30

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

Я делал так: при каждом изменении положения фигур для каждой из них я генерировал список в возможными ходами фигуры, если король противника входил в этот список, объявляем шах.



Офлайн

#3 Июль 5, 2011 21:39:19

Nekron
От:
Зарегистрирован: 2011-07-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

А код можешь прислать?



Офлайн

#4 Июль 5, 2011 21:49:48

sp3
От:
Зарегистрирован: 2010-01-12
Сообщения: 405
Репутация: +  18  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

легко http://pastebin.com/6B3cZYzz
надеюсь не из УПИ?



Офлайн

#5 Июль 5, 2011 21:50:14

Nekron
От:
Зарегистрирован: 2011-07-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

Не



Офлайн

#6 Июль 5, 2011 21:52:31

Nekron
От:
Зарегистрирован: 2011-07-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

Спасибо огромное!!



Офлайн

#7 Июль 5, 2011 21:59:04

Nekron
От:
Зарегистрирован: 2011-07-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

А она рабочая или ее подредактировать надо?



Офлайн

#8 Июль 5, 2011 23:01:42

Actor
От:
Зарегистрирован: 2010-10-10
Сообщения: 39
Репутация: +  0  -
Профиль  

помогите написать прогу, или подскажите алгоритм

doska = [[0 for i in xrange(8)] for i in xrange(8)]
def print_doska(doska): #doska dlya naglyadnosti
for i in doska:
print i
print '-------------------------------------'
print_doska(doska)
f = [[0,0],[0,0],[0,0]] #1 - korol 2- slon 3-tura
for i in xrange(3):
f[i][0] = input() #koordinata po gorizontali
f[i][1] = input() #po verticali
doska[f[i][0]][f[i][1]] = i + 1 #oboznochaem figuru, dlya naglyadnosti. na algoritm ne vliyaet
print_doska(doska)
def check_tura(f):
if f[0][0] == f[2][0]:
if (f[0][0]==f[1][0]) and ((f[0][1]<f[1][1]<f[2][1]) or (f[2][1]<f[1][1]<f[0][1])): return False
else: return True
elif f[0][1] == f[2][1]:
if (f[0][1]==f[1][1]) and ((f[0][0]<f[1][0]<f[2][0]) or (f[2][0]<f[1][0]<f[0][0])): return False
else: return True
else: return False
def check_officer(f):
if (f[0][0]-f[1][0]==f[0][1]-f[1][1]):
if (f[0][0]-f[2][0]==f[0][1]-f[2][1]):
if ((f[0][0]<f[2][0]<f[1][0]) and (f[0][1]<f[2][1]<f[1][1])) or \
((f[0][0]>f[2][0]>f[1][0]) and (f[0][1]<f[2][1]<f[1][1])) or \
((f[0][0]<f[2][0]<f[1][0]) and (f[0][1]>f[2][1]>f[1][1])) or \
((f[0][0]>f[2][0]>f[1][0]) and (f[0][1]>f[2][1]>f[1][1])):
return False
else: return True
else: return True
else: return False

#esli functsiyi vozvrashayut True - znachit korol' pod udarom

print 'Bjet tura - ', check_tura(f), ', bjet officer - ', check_officer(f)
за быдлокод не пинайть. вроде работает. разберешься сам ;)
подсказка:
1 - король
2 - слон
3 - тура

если разберешь исходник - поймёшь алгоритм



Отредактировано (Июль 5, 2011 23:12:50)

Офлайн

#9 Июль 5, 2011 23:04:19

Nekron
От:
Зарегистрирован: 2011-07-05
Сообщения: 10
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

Благодарю!!



Офлайн

#10 Июль 6, 2011 00:01:21

Felix_228
От:
Зарегистрирован: 2011-07-06
Сообщения: 20
Репутация: +  0  -
Профиль   Отправить e-mail  

помогите написать прогу, или подскажите алгоритм

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



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version