ä»åã¯ä»ãŸã§ã®ç¥èã䜿ã£ãŠç°¡åãªã²ãŒã ãäœã£ãŠã¿ãŸãããŸã GUIã«ã€ããŠã¯è©³çŽ°ã«æ±ã£ãŠããªããããã²ãŒã ã¯CLI(ã¿ãŒããã«ãã³ãã³ãããã³ãã)ã䜿ã£ããã®ãšãªããŸãã
ã©ããããã®ãäœãã
åœæ°çæRPGãç°¡åã«ãããããªã²ãŒã ãäœããŸãã倧人ã®äºæ ã§ç»åã¯åºããªãã®ã§ããã以äžã®ãããªç»é¢ã¯èŠãããšããããŸããã
ãªãªãžãã«ã®ãšããã§ããã°ã¢ã³ã¹ã¿ãŒãšã®ããã«ãªã©ãããã®ã§ãããããä»åã¯ãšããããã
- äž»äººå ¬ãé·æ¹åœ¢åã®ããããæ©ã
- äž»äººå ¬ã¯çºäººãšè©±ãããšãã§ãã
ãšããæ©èœã®ã¿ãå®è£ ããŸããã¯ãœã²ãŒã§ããæåã¯ãããªãã®ã§ææ ¢ããŠãã ãã(ç¬)ã
éçºã®æµã
æåã«ãã¹ãŠã®ã¯ã©ã¹ãèšèšããŠäžæ°ã«è©³çްãäœã蟌ãã®ã§ã¯ãªããæ©èœæ¡åŒµãããªããåŸã ã«äœãããã§ãããããšæããŸãã
ãã ãäœãèããã«äœãå§ãããšåŸã ã®ä¿®æ£ã倧å€ã«ãªãããã以äžã®å³ãããªã¢ãŒããã¯ãã£ã«ããããšæããŸãã
ãªããã®ãããªã¢ãŒããã¯ãã£ãšãªã£ããçè§£ããå¿ èŠããããŸãããŸãã²ãŒã ãã©ã®ããã«æ§æãããŠãããããèããŠã¿ãŠãã ãããã²ãŒã ã®æ§æèŠçŽ ã«ã¯ãããããããããã«äž»äººå ¬ãçºäººãããŸããããã®ãããMapã¯ã©ã¹ãäœããããã«äž»äººå ¬ã® Heroã¯ã©ã¹ããçºäººã®Townsmanã¯ã©ã¹ãæãããŸããçºäººã¯è€æ°ãããããTownsman ãè€æ°æã€townspeopleãšããé åã䜿ã£ãŠããŸãã
å®è£ ã®æ¹æ³ã¯ããŸããŸã§ãããããä»åã¯ããŒããŒãå ¥åãHeroã¯ã©ã¹ãèªã¿åãã ãã®å ¥åã«å¿ããŠç»é¢ãã¢ããããŒããããšãããã®ã«ããŸãã
å®è£ æé ã¯å€§ãŸãã«ä»¥äžã®ãããªå·¥çšãšããŸãã
- Heroã¯ã©ã¹ã®å®è£ 1: ããŒããŒãããã®å ¥åãèªã¿åã
- Heroã¯ã©ã¹ã®å®è£ 2: å ¥åã«å¿ããŠãx,y座æšã®æŽæ°ãšåãã«å¿ããã¢ã€ã³ã³ã®ã¢ããããŒã
- Mapã¯ã©ã¹ã®å®è£ : äž»äººå ¬ãããããæ©ãåããããã«ãã
- Townsmanã¯ã©ã¹ã®å®è£ : äž»äººå ¬ã«äŒè©±æ©èœã®è¿œå
ãã®1ïœ4ã®å®è£ ãå®äºãããšãæçµçã«ã¯ä»¥äžã®å³ã®ãããªåœ¢ã§ããã°ã©ã ãåãããã«ãªããŸãã
ãªããžã§ã¯ã詊è¡çãªèгç¹ããèãããšãéèŠã«ãªãã®ã¯Mapã«æ å ±ãæããéããªããšããããšã§ããç¹ã«æèãæããèšèšãããšãäž»äººå ¬ãçºäººãšãã£ããã¹ãŠã®åº§æšãMapã¯ã©ã¹ã§ç®¡çãããããªã³ãŒãã«ãªãå¯èœæ§ãé«ããã§ãããä»åã¯ã座æšã¯åºæ¬çã«HeroãTownsmanèªèº«ã§ç®¡çãããããã«ããŸãã
ããŒå ¥åãèªã¿åã
ãŸã第1å·¥çšãšããŠãåè Heroã¯ã©ã¹ãããŒå ¥åãèªã¿åãããšããå§ããŸããããã«ã¯ããŒããŒãã®ããŒå ¥åãèªã¿åã颿°ãå©çšããŸãã以åãraw_input()ã䜿ã£ãŠ EnterãæŒããããŸã§ã®è€æ°ã®ããŒå ¥åããŸãšããŠèªã¿åãããšãããŸããããããã® ã²ãšã€ã®ããŒçã ãšæã£ãŠããã ããã°å€§äžå€«ã§ãã
æ®å¿µãªããPythonã«ã¯ããŒå ¥åãã²ãšã€ã ãèªã¿åã颿°ããªãã®ã§ãä»åã¯getchãšããæ¢åã®ã©ã€ãã©ãªã䜿ããŸããããããget charã«ååãç±æ¥ããŠããŸãããèªåã§ããŠã³ããŒãããŠããã ããŠãããŸããªãã®ã§ããã以äžã«ç§ãå©çšããã³ãŒããäžå¿çœ®ããŠãããŸãã
getch.pyã§ã¯ããã£ããã³ãŒããæžãå§ããŠã¿ãŸããåºæ¬çã«ã¯whileæã§ç¡éã«ãŒããããŠãããŒãèªã¿åã衚瀺ãããšããæµãã§ãããªããIDLEãªã©ã§åäœããããšåããªãå¯èœæ§ãããã®ã§ã¿ãŒããã«ãã³ãã³ãããã³ããããå®è¡ããŠãã ããã
ããã°ã©ã ã以äžã«èšèŒããŸãã
import getch
class Hero:
def run(self):
while(True):
key = ord(getch.getch())
if(key == 3): # Ctrl-C: Quit
print('bye!!')
break;
print('key input: ' + str(key))
hero = Hero()
hero.run()
å°ãäžå¯§ã«èª¬æããŸãããŸãããã°ã©ã ãã¡ã€ã«ãšåããã£ã¬ã¯ããªã«ããgetch.pyãimportããŠããŸãããããŠHeroã¯ã©ã¹ã®runã¡ãœãããå®è¡ãããšç¡éã«ãŒãã«å ¥ãã
- ããŒå ¥åãèªã¿åã
- å ¥åå€ãord颿°ã䜿ã£ãп޿°ã«ãã
- å ¥åå€ãç»é¢ã«è¡šç€º
ãšãããŠããŸãã
ãã ãããã ãã ãšããã°ã©ã ãçµäºãã§ããªããªãã®ã§ãCtrl-Cãå ¥åããããããã°ã©ã ãçµäºããããã«ããŠããŸããå ·äœçã«ã¯ãCtrl-CãæŒããããkey = ord(getch.getch()) ã«ããkeyã¯3ã«ãªããŸãããããŠifæã§keyã3ã«ãªã£ãŠãããã確èªããŠããŸããããã¯èŠããã«Ctrl-CãæŒãããããšããããšã®ç¢ºèªãšåãã§ãã
ãã®ããã°ã©ã ãèµ·åã㊠a s d f Ctrl-C ãšæŒããšä»¥äžã®ããã«ãªããŸããã
% python test.py
key input: 97
key input: 115
key input: 100
key input: 102
bye!!
ç°¡åã§ããã
åè ã®äœçœ®æ å ±ãšã¢ã€ã³ã³
ããŒå ¥åãèªã¿åããããã«ãªã£ãã®ã§ã次ã¯ãããäžã®åè ãåããããã®å®è£ ãå§ããŸãããŸã以äžã®çµµãèŠãŠäžãããåè ãçæ§ããããããã«ã¯ã°ãªããããããããã«ãã£ã©ã¯ã¿ãŒãé 眮ãããŠããããšãããããŸããã
ãã®å³ã§ãããšçæ§ã¯x = 3, y = 1ã«ããŸãããããŠäž»äººå ¬ã¯x =3, y = 3ã«ããŸãã
åè ã¯åºæ¬çã«ãã®ã°ãªããã«æ²¿ã£ãŠåããŸãããã®ãããä»åã¯å çšã®Heroã¯ã©ã¹ãæŒãããããŒã«å¿ããŠx,y座æšãæŽæ°ãããã£ã©ã¯ã¿ãŒã®ã¢ã€ã³ã³ãåãã«å¿ãããã®ã«å€åããããšããæ¡åŒµãããŸããã¢ã€ã³ã³ã¯äžåãã ^ ãå·Šã < ãå³ã > ãäžã V ãšãªããŸããèŠããã«ç¢å°ã§ããã
ãªããããŒããŒãã®ç¢å°ããŒã¯æ©çš®äŸåã®ããã§ããã®ã§ä»£ããã«ã
- äž: w
- å·Š: a
- å³: s
-
äž: z
ãšããŠããŸãã
ã³ãŒãã以äžã«èšèŒããŸãã
import getch
class Hero:
def __init__(self, x, y):
self.x = x
self.y = y
self.icon = '^'
def run(self):
print('-----------------------------')
print('w:up, a:left, s:right, z:down')
print('ctrl-c:quit')
print('-----------------------------')
while(True):
key = ord(getch.getch())
if(key == 3): # Ctrl-C: Quit
print('bye!!')
break;
elif(key == 119): # W: Up
self.icon = '^'
self.y -= 1
elif(key == 97): # A: Left
self.icon = '<'
self.x -= 1
elif(key == 115): # S: Right
self.icon = '>'
self.x += 1
elif(key == 122): # Z: Down
self.icon = 'V'
self.y += 1
else:
continue
print(self.icon + ' X:' + str(self.x) + ', Y:' + str(self.y))
hero = Hero(0, 0)
hero.run()
å ã»ã©ã®ã³ãŒãããã®å€æŽç¹ãšããŠã¯ãã³ã³ã¹ãã©ã¯ã¿ã§åº§æšãšã¢ã€ã³ã³ãåæåããããŒå ¥åã«å¿ããŠx, yã®å€ãšã¢ã€ã³ã³ãæŽæ°ããããã«ããããšãæããããŸãããŸãæåã«ããŒã®äœ¿ãæ¹ã®ã¡ãã»ãŒãžãåºããŠããŸããã
ããããšæããŸããå·Šã«è¡ããšããããšã¯ x 座æšã1 æžããšããããšãªã®ã§ã'self.x -= 1' ãšããŠxã®å€ã1æžãããŠããŸããä»ã®æ¹åããããšåãã§åº§æšã« +-1ããŠããŸãã
å®è¡ãããšä»¥äžã®ããã«ãªããŸãã
YUIITO-M-64WZ% python test.py
-----------------------------
w:up, a:left, s:right, z:down
ctrl-c:quit
-----------------------------
V X:0, Y:1
V X:0, Y:2
V X:0, Y:3
V X:0, Y:4
< X:-1, Y:4
< X:-2, Y:4
< X:-3, Y:4
< X:-4, Y:4
> X:-3, Y:4
> X:-2, Y:4
> X:-1, Y:4
> X:0, Y:4
^ X:0, Y:3
^ X:0, Y:2
^ X:0, Y:1
^ X:0, Y:0
bye!!
æŒãããããŒã«ãã£ãŠã¢ã€ã³ã³ã倿Žãããx,y座æšãæŽæ°ãããŠããããšãããããŸãã
ãããã®å®è£
åè ã®åº§æšãæŽæ°ã§ããããã«ãªã£ãã®ã§ã次ã¯å®éã«ããããäœæããŠåè ãåãããããã«ããããšæããŸãã
決ããããæ å ãåè ãç§»åã§ããããã«ããããã«ãåè ãèªåã®x, y座æšãæŽæ°ããåã«ãããã«ç§»åã§ããããã確èªããç§»åã§ããå Žåã®ã¿æŽæ°ãããŸããããšãã°åº§æš0,0ã¯æ å ã§ããã0,-1ã¯æ å€ãªã®ã§ç§»åã§ããŸããã
ã€ãŸãx = 1, y = 0ã«ããåè ãå·Šã«è¡ãããå Žåããã²ãšã€å·Šã®ãã¹ã§ãã x = 0, y = 0 ã«ç§»åã§ããããã確èªããåããã®ã§åº§æšãæŽæ°ããŸãããããŠåè ã®ã¢ã€ã³ã³ã®åããå·Šã«æŽæ°ããŸãã
äžæ¹ãx = 1, y = 0ã®éã«äžã«ç°åãããå Žåã¯ãã²ãšã€äžã®ãã¹ã§ããx = 1, y = -1ã«ç§»åã§ããããã確èªãããããæ å€ã®ããåããªãã®ã§åº§æšãæŽæ°ããŸããããã ãåè ã®ã¢ã€ã³ã³ã®åãã ãã¯äžåãã«æŽæ°ããŸãã
ãŸãæ°ããäœã£ããããã¯ã©ã¹ã®ã³ãŒããèŠãŠã¿ãŸããéèŠãªã®ã¯is_movableã¡ãœãããšupdateã¡ãœããã§ãã
import getch
class Map:
def __init__(self, width, height):
self.width = width
self.height = height
# 颿°æž¡ãã§äžèš2ã€ã®ã¡ãœãããåè
ã€ã³ã¹ã¿ã³ã¹ã«æž¡ã
self.hero = Hero(3, 3, self.is_movable, self.update)
def run(self):
self.hero.run()
# åè
ãåº§æš x, y ã«åããã° True ãè¿ã
def is_movable(self, x, y):
if(x < 0):
return False
elif(self.width-1 < x):
return False
elif(y < 0):
return False
elif(self.height-1 < y):
return False
return True
# ç»é¢ã«çŸåšã®ç¶æ
ã衚瀺
def update(self):
characters = {}
characters[(self.hero.x, self.hero.y)] = self.hero.icon
def get_top_bottom_text():
return '+' + '-' * self.width + '+\n'
map_list = []
map_list.append(get_top_bottom_text())
for y in range(0, self.height):
map_list.append('|')
for x in range(0, self.width):
if((x, y) in characters):
map_list.append(characters[(x,y)])
else:
map_list.append(' ')
map_list.append('|\n')
map_list.append(get_top_bottom_text())
print(''.join(map_list))
ç§»åã§ãããã®ç¢ºèªã¯åè ãšããããããããã«äŸåããŠããããããã®å€å®ã¯åè ã¯ã©ã¹ã§ã¯ãªããããã¯ã©ã¹ã®is_movableãšããã¡ãœããã«å®è£ ããŠããŸãã
ãã®ã¡ãœããã«åè ãç§»åãããå ã®x, y座æšãæž¡ããšãããããããã®äžéãäžéããã¯ã¿åºãŠããªããããã§ãã¯ããã¯ã¿åºãŠããã° False(ç§»åã§ããªã)ãã¯ã¿åºãŠããªããã°True(ç§»åã§ãã)ãè¿ããŸãããããŠåè ã¯ãã®çµæã«åŸã£ãŠèªåã®åº§æšãæŽæ°ããŸãã
次ã«updateã¡ãœããã¯ããããæ ä»ãã§è¡šç€ºããåè ã座æšã«æ²¿ã£ãäœçœ®ã«æç»ãããŸããã³ãŒããèªãã§ã¿ãã°äœããã£ãŠãããããããšæããŸããã以äžã®ããã«æç»ããŠããŸãã
- åè ãªã©ã®ãã£ã©ã¯ã¿ãŒãDictionaryã«ãããŒã座æšã®ã¿ãã« (x座æš,y座æš)ãValueãã¢ã€ã³ã³ãšããŠæ ŒçŽ
- äžçªäžã®å(æ )ã衚瀺
- å·Šç«¯ã®æ ã衚瀺
- åã®1ãã¹ã衚瀺ããã£ã©ã¯ã¿ãŒãããã°ã¢ã€ã³ã³ãããªããã°ç©ºçœ
- å³ç«¯ã®æ ãè¡šç€ºãæ¹è¡
- 3ïœ5ããããã®é«ãç¹°ãè¿ã
- äžçªäžã®å(æ )ã衚瀺
ãªããå®éã¯æ¯åããªã³ãããã®ã§ã¯ãªãããªã¹ãã«æååãã©ãã©ã远å ããŠãããæåŸã«ãããç»é¢ã«åºåãããŠããŸããIOåŠçã®åæ°ãæžããããã«ããŸãšããŠåºåãããŠããŸãã
ã³ã³ã¹ãã©ã¯ã¿ã§ãã__init__ãèŠãŠããããšããããŸããããã®is_movableã¡ãœãããšupdateã¡ãœããã¯ã颿°æž¡ããã䜿ã£ãŠHeroã¯ã©ã¹ã«æž¡ãããŠããŸãã
ããããããšã§ãããã¯ã©ã¹ã®ã¡ãœããã§ããis_movableãªã©ããMapã®ã€ã³ã¹ã¿ã³ã¹ãçµç±ããã«åè ã¯ã©ã¹ãçŽæ¥åŒã³åºããããã«ããŠããŸããããã¯Heroã¯ã©ã¹ã«èŠªã§ããã®Mapã¯ã©ã¹ã®ã€ã³ã¹ã¿ã³ã¹ãæž¡ãããããæå³ããªãäœ¿ãæ¹ããããªãããšããé¢ã§åªããŠããŸãã
å°ãããããããšæãã®ã§ä»¥äžã®å³ã䜿ã£ãŠèª¬æããŸãã
äžèšå³ã§ã¯ãMapãHero ãæã£ãŠããŠãHeroã¯Mapã®ã¡ãœããã䜿ãããããšããŸãã ãã ãHeroã䜿ãã®ã¯function Aã®ã¿ã§ãããfunction Bã¯ãŸãå¥ã®çšéã§äœ¿ãããŠãããšããŸãããã
äžåŽã®äŸã§ã¯ãMapãHeroã€ã³ã¹ã¿ã³ã¹ãäœæãããšãã«èªåèªèº«ãã€ã³ã¹ã¿ã³ã¹ãšããŠheroã«æž¡ããŸããHeroã€ã³ã¹ã¿ã³ã¹ã¯æž¡ãããMapã®ã€ã³ã¹ã¿ã³ã¹ãçµç±ããŠMapã®ã¡ãœãããåŒã³åºããŸããããšãã°ä»¥äžã®ã³ãŒãã®ãããªäŸã§ãã
class Map:
def __init__(self):
self.hero = Hero(self)
def function_a(self):
print('function a')
def function_b(self):
print('function b')
def test(self):
self.hero.test()
class Hero:
def __init__(self, map1):
self.map1 = map1
def test(self):
self.map1.function_a()
self.map1.function_b()
m = Map()
m.test()
# function a
# function b
ãã®ãšããHeroã®ã€ã³ã¹ã¿ã³ã¹ã¯Mapã®ã€ã³ã¹ã¿ã³ã¹ãçµç±ããŠfunction_aãåŒã³åºããŠããŸãããæ¬æ¥Heroãè§Šãã¹ãã§ãªãfunction_bãŸã§åŒã³åºããŠããŸã£ãŠããŸãããããã¯ããŸããããªãã§ãã
äžæ¹ãäžåŽã®äŸã§ã¯é¢æ°æž¡ããããŠfunction_aãHeroã€ã³ã¹ã¿ã³ã¹ã«æž¡ããŠããã®ã§ãfunction_bã¯æ®éã§ããã°åŒã³ã ãããŸããã
ãµã³ãã«ã³ãŒãã¯ä»¥äžãšãªããŸãã
class Map:
def __init__(self):
self.hero = Hero(self.function_a)
def function_a(self):
print('function a')
def function_b(self):
print('function b')
def test(self):
self.hero.test()
class Hero:
def __init__(self, function_a):
self.function_a = function_a
def test(self):
self.function_a()
m = Map()
m.test()
# function a
ã³ãŒããšããŠã¯äž¡è ã®éãã¯ããã»ã©å€ããªãã®ã§ãããéãã«æ³šæããŠãã ããã
è©±ãæ»ããŸããããæ¬¡ã«æŽæ°ããHeroã¯ã©ã¹ã瀺ããŸãã
class Hero:
def __init__(self, x, y, is_movable, update):
self.x = x
self.y = y
self.icon = '^'
self.is_movable = is_movable
self.update = update
def run(self):
print('-----------------------------')
print('w:up, a:left, s:right, z:down')
print('ctrl-c:quit')
print('-----------------------------')
self.update()
while(True):
key = ord(getch.getch())
if(key == 3): # Ctrl-C: Quit
print('bye!!')
break;
elif(key == 119): # W: Up
self.icon = '^'
if(self.is_movable(self.x, self.y-1)): self.y -= 1
elif(key == 97): # A: Left
self.icon = ''
if(self.is_movable(self.x+1, self.y)): self.x += 1
elif(key == 122): # Z: Down
self.icon = 'V'
if(self.is_movable(self.x, self.y+1)): self.y += 1
self.update()
m = Map(7,7)
m.run()
èŠãŠããããšãããããã«ãHeroã¯ã©ã¹å ã§é¢æ°æž¡ãã§æž¡ãããis_movableãšupdateãåŒã³åºããŠããŸãããã以å€ã¯ç¹ã«å€§ããªå€æŽã¯ãããŸãããã
çºäººã®å®è£
æåŸã«çºäººãå®è£ ããŸãããŸãçºäººã®ã€ã³ã¹ã¿ã³ã¹ã«x,y座æšãšã¢ã€ã³ã³ãããããã¡ãã»ãŒãžãæãããŠããŸãã
import getch
class Townsman:
def __init__(self, x, y, icon, message):
self.x = x
self.y = y
self.icon = icon
self.message = message
ãããŠMapã¯ã©ã¹ã«çºäººãé åãšããŠæãããŠããŸãããã®éã«çºäººãåæåããŠããŸããã
ãŸãis_movable颿°ã§çºã®æ ã®å€å®ã ãã§ãªãããããã«çºäººããããããšããå€å®ã远å ããŠããŸããäž»äººå ¬ãçºäººã®ãããã¹ã«åããªãããã«ããããã§ãã
ãããŠæ°ããã¡ãœããã§ããget_messageã§ã¯ãæå®ããx,y座æšã®çºäººããã¡ãã»ãŒãžãååŸããŸããå®è£ ãèŠãã°ããããŸããçºäººã®é åãã«ãŒãã§åããŠãããã«çºäººãããã°ã¡ãã»ãŒãžãååŸããŠè¿ããŠããŸããã«ãŒãã§äœããããããªããã€ãŸãããã«çºäººãããªããã°ã誰ãããªãããšããã¡ãã»ãŒãžãè¿ããŠããŸãã
æåŸã®å€æŽã¯ã³ã³ã¹ãã©ã¯ã¿å ã®Heroã®åæåã§ããåæåæã«is_movableãupdate ã«å ããŠããã®get_messageã颿°æž¡ãã§æž¡ãããã«ããŠããŸãã
class Map:
def __init__(self, width, height):
self.width = width
self.height = height
self.hero = Hero(3, 3, self.is_movable, self.get_message, self.update)
self.townspeople = []
self.townspeople.append(Townsman(3, 1, 'K', "I'm King"))
self.townspeople.append(Townsman(1, 5, 'S', "I'm Soldier 1"))
self.townspeople.append(Townsman(5, 5, 'S', "I'm Soldier 2"))
def run(self):
self.hero.run()
def is_movable(self, x, y):
if(x < 0):
return False
elif(self.width-1 < x):
return False
elif(y < 0):
return False
elif(self.height-1 < y):
return False
for townsman in self.townspeople:
if(x == townsman.x and y == townsman.y):
return False
return True
def update(self, message=''):
characters = {}
for townsman in self.townspeople:
characters[(townsman.x, townsman.y)] = townsman.icon
characters[(self.hero.x, self.hero.y)] = self.hero.icon
def get_top_bottom_text():
return '+' + '-' * self.width + '+\n'
def get_message_border(width):
return '#' * width + '\n'
map_list = []
map_list.append(get_top_bottom_text())
for y in range(0, self.height):
map_list.append('|')
for x in range(0, self.width):
if((x, y) in characters):
map_list.append(characters[(x,y)])
else:
map_list.append(' ')
map_list.append('|\n')
map_list.append(get_top_bottom_text())
map_list.append(get_message_border(10))
map_list.append(message + '\n')
map_list.append(get_message_border(10))
print(''.join(map_list))
def get_message(self, x, y):
for townsman in self.townspeople:
if(x == townsman.x and y == townsman.y):
return townsman.message
return 'no one exists..'
æåŸã«Heroã¯ã©ã¹ã§ããããã¯ç°¡åã§ãMapã§å®çŸ©ãããget_message颿°ã颿°æž¡ãã§åãåããããŒdãæŒããããšãã«åŒã³åºãããã«ããŠããŸãã
dãæŒããããšãã«ã©ã®åº§æšã®äœäººã«è©±ãããããã¯äž»äººå ¬ãåããŠããæ¹åã§å€ãã£ãŠããã®ã§ãã¡ãœããtalkãæ°ããå®è£ ãããããã§è©±ããããã¹ãx,y座æšãæ±ããŠããŸãã
class Hero:
def __init__(self, x, y, is_movable, get_message, update):
self.x = x
self.y = y
self.icon = '^'
self.is_movable = is_movable
self.get_message = get_message
self.update = update
def run(self):
print('-----------------------------')
print('w:up, a:left, s:right, z:down, d:talk')
print('ctrl-c:quit')
print('-----------------------------')
self.update()
while(True):
key = ord(getch.getch())
if(key == 3): # Ctrl-C: Quit
print('bye!!')
break;
elif(key == 119): # W: Up
self.icon = '^'
if(self.is_movable(self.x, self.y-1)): self.y -= 1
elif(key == 97): # A: Left
self.icon = ''
if(self.is_movable(self.x+1, self.y)): self.x += 1
elif(key == 122): # Z: Down
self.icon = 'V'
if(self.is_movable(self.x, self.y+1)): self.y += 1
elif(key == 100): # D: talk
self.talk()
continue
self.update()
def talk(self):
if(self.icon == '^'):
message = self.get_message(self.x, self.y-1)
elif(self.icon == ''):
message = self.get_message(self.x+1, self.y)
elif(self.icon == 'V'):
message = self.get_message(self.x, self.y+1)
else:
print('Error')
exit()
self.update(message)
m = Map(7,7)
m.run()
ãœãããŠã§ã¢ã®èšèšã«ã€ããŠ
å人çãªæèŠãšãªã£ãŠããŸãã®ã§ããããœãããŠã§ã¢ã®èšèšã¯ãããšäœãã¬ãã«ã§ã® ããã°ã©ãã³ã°ã®çµéšãåå°ãšãªããŸããäžå®å®ãªåå°ã®äžã«å»ºç©ã建ãŠãããªãããã«ãäœãã¬ãã«ã§ã®å®è£ ããªããžã§ã¯ãæåã®çè§£ã§ã¯ãæ£ããèšèšãããããšã¯äžè¬çã«é£ãããšèããããŸãã
ãŸãã¯ä»åçšåºŠã®æ°çŸè¡ã¬ãã«ã®ã³ãŒãã§ãããã®ã§ãèªåã§äžããã³ãŒããæžãå§ããŠãããçšåºŠãªãããæ°åè¡çšåºŠã®ã¢ããªã±ãŒã·ã§ã³ãæžããŠã¿ãã®ãäžéã®æ©éã ãšæããŸãã
ãªããä»åã¯æ¯èŒçç°¡åãªå Žåœããçãªåœ¢ã§æ¡åŒµãç¹°ãè¿ããŸãããèŠæš¡ã®å°ããããã°ã©ã ã®å Žåã¯ããã®ãããªæ§æææ³ã§ãåé¡ãªããšæããŸãããã ãéçºããã³ãŒãã®èŠæš¡ãé¢ãã人å¡ã®æ°ãå¢ããŠãããšããã®ãããªå Žåœããçãªèšèšææ³ã§ã¯éçºã®å·¥çšã®åŸã«ãªãã°ãªãã»ã©ä¿®æ£ãé£ãããªã£ãŠããŸãã®ã§æ³šæããŠãã ããããã ã4ïœ5äººã§æ°äžè¡ã®ã³ãŒããæžãããããªããããªæãã§ãå šç¶ããããšæããŸããã
次åãããªããžã§ã¯ãæåã®åŸåæŠã«å ¥ããŸãããšãã£ãŠãååããå 容ã¯å°ãªããäž»ã«ç¶æ¿ãšããªã¢ãŒãã£ãºã ãã¡ã€ã³ã®å 容ãšãªããŸããæ¬¡åããããããããé¡ãããŸãã
å·çè
玹ä»äŒè€è£äž(ITO Yuichi)ã·ã¹ã³ã·ã¹ãã ãºã§ã®æ¥åãšå€§åŠã§ã®ç 究掻åã§ã³ã³ãã¥ãŒã¿ãããã¯ãŒã¯ã«6幎é¢ãããå°éã¯L2/L3 Switching ãšããŒã¿ã»ã³ã¿ãŒé¢é£æè¡ããã³SDNãTACãšããŠã·ã¹ã³é¡§å®¢ã®ãã¯ãã«ã«ãµããŒãæ¥åã«åŸäºã瀟å åãã®ãœãããŠã§ã¢é¢é£ã®ãã¬ãŒãã³ã°ããã³ããŒã¿ã»ã³ã¿ãšSDNé¢ä¿ã®å€éšè¬æŒãªã©ãè¡ãã ããšããšä»®æ³ãããã¯ãŒã¯é¢é£æè¡ã®ç ç©¶éçºã«åŸäºããŠããããšãããããããã¯ãŒã¯ã ãã§ãªãããã°ã©ãã³ã°ãLinuxé¢é£æè¡ã«ã粟éãCisco瀟å å€åãã®ãã©ãã«ã·ã¥ãŒãã£ã³ã°ããŒã«ã®éçºããè¶£å³ã§é³å£°åæåŠçã®ã¢ããªã±ãŒã·ã§ã³ããµãŒãã¹ãéçºã Cisco CCIE R&S, Red Hat Certified Engineer, Oracle Java Gold,2009幎床 IPA æªèžãããžã§ã¯ãæ¡æ 詳现(è±èª)ã¯ãã¡ã |
|---|




