赞 | 15 |
VIP | 0 |
好人卡 | 0 |
积分 | 19 |
经验 | 16801 |
最后登录 | 2024-7-10 |
在线时间 | 403 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1939
- 在线时间
- 403 小时
- 注册时间
- 2015-8-30
- 帖子
- 395
|
加入我们,或者,欢迎回来。
您需要 登录 才可以下载或查看,没有帐号?注册会员
x
- # 常量
- module Con
- Size = 480
- White = Color.new(255, 255, 255)
- Black = Color.new(0, 0, 0)
- Gray = Color.new(127, 127, 127)
- end
- Graphics.resize_screen(Con::Size, Con::Size) # 画面大小
- Graphics.frame_rate = 30 # 帧速率
- # 棋盘
- class Checkerboard < Sprite
- attr_reader(:size)
- def initialize(size = 15)
- super()
- bitmap = Bitmap.new(Con::Size, Con::Size)
- rect = Rect.new(0, 20, Con::Size, Con::Size)
- bitmap.fill_rect(rect, Con::Gray)
- for i in 1..size
- rect = Rect.new(Con::Size/(size+1), Con::Size/(size+1)*i, Con::Size-Con::Size/(size+1)*2, 1)
- bitmap.fill_rect(rect, Con::Black)
- end
- for i in 1..size
- rect = Rect.new(Con::Size/(size+1)*i, Con::Size/(size+1), 1, Con::Size-Con::Size/(size+1)*2)
- bitmap.fill_rect(rect, Con::Black)
- end
- for i in 1..3
- rect = Rect.new(Con::Size/4*i-1, Con::Size/4*(4-i)-1, 2, 2)
- bitmap.fill_rect(rect, Con::Black)
- rect = Rect.new(Con::Size/4*(4-i)-1, Con::Size/4*i-1, 2, 2)
- bitmap.fill_rect(rect, Con::Black)
- end
- @size = size
- @bitmap = bitmap
- end
- def dispose
- @bitmap.dispose
- super
- end
- end
- # 下棋
- class Playing
- # 主逻辑
- def main
- start
- loop { update }
- end
- # 开始处理
- def start
- Mouse.activate
- @board = Checkerboard.new # 棋盘
- @piece = Sprite.new # 棋子
- @piece.z = 1
- @piece.bitmap = Bitmap.new(Con::Size, Con::Size)
- @table = Table.new(@board.size, @board.size) # 棋局
- for i in [email protected]
- for j in [email protected]
- @table[i, j] = 0
- end
- end
- @history = [@table] # 历史棋局
- [url=home.php?mod=space&uid=8407]@black[/url] = true # 下棋方
- end
- # 更新
- def update
- Graphics.update
- Mouse.update
- table = @table
- if Mouse.trigger?(:L) # 落子
- @table[Mouse.x/(Con::Size/@board.size),Mouse.y/(Con::Size/@board.size)] = (@black ? 1 : 2)
- @history << @table
- @black = !@black
- elsif Mouse.trigger?(:R) # 悔棋
- @history.pop
- @table = @history[-1]
- @black = !@black
- end
- # 更新棋子
- if @table != table
- for i in [email protected]
- for j in [email protected]
- rect = Rect.new(Con::Size/(@board.size+1)*i-2, Con::Size/(@board.size+1)*j-2, 4, 4)
- case @table[i, j]
- when 0
- @piece.bitmap.clear_rect(rect)
- when 1
- @piece.bitmap.fill_rect(rect, Con::Black)
- when 2
- @piece.bitmap.fill_rect(rect, Con::White)
- end
- end
- end
- end
- end
- end
- Playing.new.main
复制代码 用了Sion大神的鼠标系统(VA鼠标脚本 6/9 更新 v2.32 by Sion)以及鼠标系统中用到的Cache模块,此外没有任何别的脚本被用到。
开始测试之后,画面全黑,除了鼠标可见可动;单击右键发生NoMethodError,脚本82行,nil没有'[]'方法。不知是为什么,特此请教。 |
|