#==============================================================================# ■ Scene_Game_of_Life#------------------------------------------------------------------------------# 生命游戏 RMXP版(可做游戏Logo) —— by 沙漠.灰#==============================================================================class Scene_Game_of_Life # 常量定义 Death = Color.new(255,255,255,255) # 死亡细胞颜色 Alive = Color.new(000,000,000,255) # 存活细胞颜色 Map_X = 200 # 地图X轴大小 Map_Y = 200 # 地图Y轴大小 #-------------------------------------------------------------------------- # ● 主处理 #-------------------------------------------------------------------------- def main $data_system = load_data("Data/System.rxdata") @sprite = Sprite.new @sprite.bitmap = RPG::Cache.title($data_system.title_name) # 执行过渡 Graphics.transition # 生成所谓的"地图" @map = Sprite.new @map.x = (640-Map_X)/2 @map.y = (480-Map_Y)/2 @map.bitmap = Bitmap.new(Map_X,Map_Y) # 初始化游戏地图 for y in 0...Map_Y for x in 0...Map_X draw_cell(x,y,rand(2)) end Graphics.update end # 主循环 loop do # 刷新画面 update # 闪人 break if $scene != self end # 准备过渡 Graphics.freeze # 释放窗口 @map.bitmap.dispose @map.dispose @sprite.bitmap.dispose @sprite.dispose end #-------------------------------------------------------------------------- # ● 刷新画面 #-------------------------------------------------------------------------- def update for y in 0...Map_Y for x in 0...Map_X # 刷新输入信息 Input.update # 按B键闪人 if Input.trigger?(Input::B) $scene = Scene_Title.new return end # 确定刷新 ready(x,y) end Graphics.update end end #-------------------------------------------------------------------------- # ● 确定刷新 #-------------------------------------------------------------------------- def ready(x,y) alive_cell = 0 for new_y in -1..1 for new_x in -1..1 next if new_x + x < 0 or new_x + x >= Map_X next if new_y + y < 0 or new_y + y >= Map_Y next if new_x == 0 and new_y == 0 if @map.bitmap.get_pixel(new_x+x, new_y+y) == Alive alive_cell += 1 end end end return if alive_cell == 2 alive_cell == 3 ? draw_cell(x,y,1) : draw_cell(x,y,0) end #-------------------------------------------------------------------------- # ● 描绘细胞 0 死 1 活 #-------------------------------------------------------------------------- def draw_cell(x,y,status) if status == 0 @map.bitmap.set_pixel(x, y, Death) else @map.bitmap.set_pixel(x, y, Alive) end endend复制代码