function [state, reward] = gridmove(state,action, environment) % % Grid world maze % % NISS2000 programed by K.Samejima Aug.1, 2000 % % protect = environment.protect; cliff = environment.cliff; start = environment.start; goal = environment.goal; % % state: x,y coordinate % prexs = state(2); preys = state(1); % action 1 :East % action 2 :West % action 3 : South % action 4 : North switch action case 1 xs = prexs + 1; ys = preys; case 2 xs = prexs - 1; ys = preys; case 3 xs = prexs; ys = preys + 1; case 4 xs = prexs; ys = preys - 1; end reward = -1; if xs < 1 | xs > size(protect,2) | ys < 1 | ys>size(protect,1) xs = prexs; ys = preys; else if protect(ys,xs) == 1 xs = prexs; ys = preys; end if goal == [xs,ys]; reward = 0; xs = start(2); ys = start(1); end if cliff(ys,xs) == 1 reward = -100; xs = start(2); ys = start(1); end end state = [ys,xs];