Commit 3f1a32a4 authored by 神楽坂玲奈's avatar 神楽坂玲奈

卡片操作

parent 83cdb5a8
cd /d %~dp0 cd /d %~dp0
del graphics\avatars\*_*.png del graphics\avatars\*_*.png
del Thumbs.db /s /F /A:S del Thumbs.db /s /F /A:S
\ No newline at end of file del fonts\*_STOP.*
\ No newline at end of file
...@@ -88,7 +88,7 @@ class Action ...@@ -88,7 +88,7 @@ class Action
@position = position @position = position
end end
def run def run
p 1 #p 1
from_field = case @from_pos from_field = case @from_pos
when Integer when Integer
player_field.field player_field.field
...@@ -117,16 +117,16 @@ class Action ...@@ -117,16 +117,16 @@ class Action
from_field.delete_at from_pos from_field.delete_at from_pos
end end
end end
p @to_pos #p @to_pos
p self #p self
#p @to_pos
to_field = case @to_pos to_field = case @to_pos
when Integer when Integer
player_field.field player_field.field
when :hand when :hand
player_field.hand player_field.hand
when :field #when :field
player_field.field # player_field.field
when :graveyard when :graveyard
player_field.graveyard player_field.graveyard
when :deck when :deck
...@@ -136,14 +136,14 @@ class Action ...@@ -136,14 +136,14 @@ class Action
when :removed when :removed
player_field.removed player_field.removed
end end
#p to_field
if @to_pos.is_a? Integer if @to_pos.is_a? Integer
to_pos = @to_pos to_field[@to_pos] = @card
elsif to_field == player_field.field #elsif to_field == player_field.field
to_pos = from_field.index(nil) || 11 # to_pos = from_field.index(nil) || 11
else else
to_pos = to_field.size to_field.unshift @card
end end
to_field[to_pos] = @card
super super
end end
end end
...@@ -169,12 +169,12 @@ class Action ...@@ -169,12 +169,12 @@ class Action
end end
class SendToGraveyard < Move class SendToGraveyard < Move
def initialize(from_player, from_pos, card) def initialize(from_player, from_pos, card)
super(from_player, from_pos, card, :graveyard) super(from_player, from_pos, :graveyard, card)
end end
end end
class Remove < Move class Remove < Move
def initialize(from_player, from_pos, card) def initialize(from_player, from_pos, card)
super(from_player, from_pos, card, :removed) super(from_player, from_pos, :removed, card)
end end
end end
class ReturnToHand < Move class ReturnToHand < Move
...@@ -184,17 +184,17 @@ class Action ...@@ -184,17 +184,17 @@ class Action
end end
class ReturnToDeck < Move class ReturnToDeck < Move
def initialize(from_player, from_pos, card) def initialize(from_player, from_pos, card)
super(from_player, from_pos, card, :deck) super(from_player, from_pos, :deck, card)
end end
end end
class ReturnToExtra < Move class ReturnToExtra < Move
def initialize(from_player, from_pos, card) def initialize(from_player, from_pos, card)
super(from_player, from_pos, card, :extra) super(from_player, from_pos, :extra, card)
end end
end end
class Control < Move class Control < Move
def initialize(from_player, from_pos, card) def initialize(from_player, from_pos, card)
super(from_player, from_pos, card, :opponent) super(from_player, from_pos, :opponent, card)
end end
end end
class Refresh_Field < Action class Refresh_Field < Action
...@@ -216,4 +216,12 @@ class Action ...@@ -216,4 +216,12 @@ class Action
@turn = turn @turn = turn
end end
end end
class Effect_Activate < Action
attr_reader :from_pos, :card
def initialize(from_player, from_pos, card)
super(from_player)
@from_pos = from_pos
@card = card
end
end
end end
\ No newline at end of file
...@@ -90,6 +90,22 @@ class Action ...@@ -90,6 +90,22 @@ class Action
"卡组顶端" "卡组顶端"
end end
end end
def self.escape_pos2(pos)
case pos
when :hand
"手卡"
when :deck
"卡组"
when :graveyard
"墓地"
when :extra
"额外牌堆"
when :removed
"除外区"
when 0..10
"场上(#{pos})"
end
end
def self.escape_position(position) def self.escape_position(position)
case position case position
when :attack when :attack
...@@ -163,7 +179,7 @@ class Action ...@@ -163,7 +179,7 @@ class Action
when /(.*)抛硬币,结果为(.+)/ when /(.*)抛硬币,结果为(.+)/
Coin.new from_player, $2=="正面", $1 Coin.new from_player, $2=="正面", $1
when /从#{PosFilter}~发动#{CardFilter}#{PosFilter}/ when /从#{PosFilter}~发动#{CardFilter}#{PosFilter}/
Activate.new from_player, parse_pos($1), parse_pos($3), parse_card($2), msg Activate.new from_player, parse_pos($1), parse_pos($3), parse_card($2)
when /从#{PosFilter}~召唤#{CardFilter}#{PosFilter}/ when /从#{PosFilter}~召唤#{CardFilter}#{PosFilter}/
Summon.new from_player, parse_pos($1), parse_pos($3), parse_card($2), msg Summon.new from_player, parse_pos($1), parse_pos($3), parse_card($2), msg
when /从#{PosFilter}~特殊召唤#{CardFilter}#{PosFilter}#{PositionFilter}/ when /从#{PosFilter}~特殊召唤#{CardFilter}#{PosFilter}#{PositionFilter}/
...@@ -184,11 +200,11 @@ class Action ...@@ -184,11 +200,11 @@ class Action
ChangePhase.new(from_player, parse_phase($1)) ChangePhase.new(from_player, parse_phase($1))
else else
p str, 1 p str, 1
system("pause") #system("pause")
end end
else else
p str, 2 p str, 2
system("pause") #system("pause")
end end
end end
def escape def escape
...@@ -214,7 +230,7 @@ class Action ...@@ -214,7 +230,7 @@ class Action
end end
class Reset class Reset
def escape def escape
"[#{@id}] ◎→[11年3月1日禁卡表] Duel!!" "[#{@id}] ◎→[11年3月1日禁卡表] Duel!!"
end end
end end
class ChangePhase class ChangePhase
...@@ -252,6 +268,76 @@ class Action ...@@ -252,6 +268,76 @@ class Action
"[#{@id}] ◎→从手卡~发动#{@card.escape}(#{@to_pos})" "[#{@id}] ◎→从手卡~发动#{@card.escape}(#{@to_pos})"
end end
end end
class SendToGraveyard
def escape
"[#{@id}] ◎→将#{@card.escape}从~#{Action.escape_pos2(@from_pos)}~送往墓地"
end
end
class Remove
def escape
"[#{@id}] ◎→将#{Action.escape_pos2(@from_pos)}#{@card.escape}从游戏中除外"
end
end
class ReturnToHand
def escape
pos = case @from_pos
when :deck
"卡组顶端"
when :graveyard
"墓地"
when :removed
"除外区"
when 0..10
"场上(#{pos})"
end
"[#{@id}] ◎→从#{pos}#{@card.escape}加入手卡"
end
end
class ReturnToDeck
def escape
pos = case @from_pos
when :hand
"手卡"
when :graveyard
"墓地"
when :removed
"除外区"
when 0..10
"场上(#{pos})"
end
"[#{@id}] ◎→#{@from_pos == :hand ? "一张卡" : @card.escape}#{pos}~放回卡组顶端" #TODO:set=【一张卡】
end
end
class ReturnToExtra
def escape
pos = case @from_pos
when :graveyard
"墓地"
when :removed
"除外区"
when 0..10
"场上(#{pos})"
end
"[#{@id}] ◎→#{@card.escape}#{pos}返回额外牌堆"
end
end
class Effect_Activate
def escape
pos = case @from_pos
when :hand
"己方手牌"
when :graveyard
"己方墓地"
when :deck
"己方卡组"
when :extra
"己方额外牌堆"
when 0..10
"(#{@from_pos})"
end
"[#{@id}] ◎→#{pos}#{@card.escape}效果发~动"
end
end
end end
......
...@@ -71,12 +71,12 @@ class Scene_Duel < Scene ...@@ -71,12 +71,12 @@ class Scene_Duel < Scene
def handle(event) def handle(event)
case event case event
when Event::MouseMotion when Event::MouseMotion
if @active_window and !@active_window.include? event.x, event.y if @active_window and @active_window.visible && !@active_window.include?(event.x, event.y)
@active_window.lostfocus @active_window.lostfocus
@active_window = nil @active_window = nil
end end
self.windows.reverse.each do |window| self.windows.reverse.each do |window|
if window.include? event.x, event.y if window.include?(event.x, event.y) && window.visible
@active_window = window @active_window = window
@active_window.mousemoved(event.x, event.y) @active_window.mousemoved(event.x, event.y)
break true break true
...@@ -85,12 +85,12 @@ class Scene_Duel < Scene ...@@ -85,12 +85,12 @@ class Scene_Duel < Scene
when Event::MouseButtonDown when Event::MouseButtonDown
case event.button case event.button
when Mouse::BUTTON_LEFT when Mouse::BUTTON_LEFT
if @active_window and !@active_window.include? event.x, event.y if @active_window and @active_window.visible && !@active_window.include?(event.x, event.y)
@active_window.lostfocus @active_window.lostfocus
@active_window = nil @active_window = nil
end end
self.windows.reverse.each do |window| self.windows.reverse.each do |window|
if window.include? event.x, event.y if window.include?(event.x, event.y) && window.visible
@active_window = window @active_window = window
@active_window.mousemoved(event.x, event.y) @active_window.mousemoved(event.x, event.y)
break true break true
......
...@@ -29,12 +29,12 @@ class Scene_Hall < Scene ...@@ -29,12 +29,12 @@ class Scene_Hall < Scene
def handle(event) def handle(event)
case event case event
when Event::MouseMotion when Event::MouseMotion
if @active_window and !@active_window.include? event.x, event.y if @active_window and @active_window.visible && !@active_window.include?(event.x, event.y)
@active_window.lostfocus @active_window.lostfocus
@active_window = nil @active_window = nil
end end
self.windows.reverse.each do |window| self.windows.reverse.each do |window|
if window.include? event.x, event.y if window.include?(event.x, event.y) && window.visible
@active_window = window @active_window = window
@active_window.mousemoved(event.x, event.y) @active_window.mousemoved(event.x, event.y)
break true break true
...@@ -73,7 +73,7 @@ class Scene_Hall < Scene ...@@ -73,7 +73,7 @@ class Scene_Hall < Scene
@active_window = nil @active_window = nil
end end
self.windows.reverse.each do |window| self.windows.reverse.each do |window|
if window.include? event.x, event.y if @active_window and @active_window.visible && !@active_window.include?(event.x, event.y)
@active_window = window @active_window = window
@active_window.mousemoved(event.x, event.y) @active_window.mousemoved(event.x, event.y)
break break
......
...@@ -43,7 +43,7 @@ class Window_Field < Window ...@@ -43,7 +43,7 @@ class Window_Field < Window
end end
if !@field.removed.empty? if !@field.removed.empty?
@items[:removed] = Removed_Pos + Card_Size @items[:removed] = Removed_Pos + Card_Size
@cards[:removed] = @field.extra.first @cards[:removed] = @field.removed.first
end end
if !@field.graveyard.empty? if !@field.graveyard.empty?
@items[:graveyard] = Graveyard_Pos + Card_Size @items[:graveyard] = Graveyard_Pos + Card_Size
...@@ -88,42 +88,45 @@ class Window_Field < Window ...@@ -88,42 +88,45 @@ class Window_Field < Window
draw_item(@index, 1) draw_item(@index, 1)
case @index case @index
when :deck when :deck
@index_card = @field.deck.first @card = @field.deck.first
@action_names = {"抽卡" => true, @action_names = {"抽卡" => true,
"卡组洗切" => true, "卡组洗切" => true,
"抽卡(双方确认)" => true, "抽卡并确认" => false,
"顶牌回卡组底部" => true, "顶牌回卡组底" => false,
"顶牌送入墓地" => true, "顶牌送入墓地" => true,
"顶牌从游戏中除外" => true, "顶牌除外" => true,
"顶牌背面除外" => true, "顶牌背面除外" => false,
"确认顶牌" => true, "确认顶牌" => false,
"双方确认顶牌" => true "双方确认顶牌" => false,
"对方确认顶牌" => false
} }
when :extra when :extra
@index_card = @field.extra.first @card = @field.extra.first
@action_names = {"特殊召唤/发动" => true, @action_names = {"特殊召唤" => true,
"效果发动" => true, "效果发动" => true,
"从游戏中除外" => true, "从游戏中除外" => true,
"送入墓地" => true "送入墓地" => true
} }
when :removed when :removed
@index_card = @field.removed.first @card = @field.removed.first
@action_names = {"特殊召唤/发动" => true, @action_names = {"特殊召唤" => @card.monster?,
"发动" => !@card.monster?,
"效果发动" => true, "效果发动" => true,
"加入手卡" => true, "加入手卡" => true,
"返回卡组" => true, "返回卡组" => true,
"送入墓地" => true "送入墓地" => true
} }
when :graveyard when :graveyard
@index_card = @field.graveyard.first @card = @field.graveyard.first
@action_names = {"特殊召唤/发动" => true, @action_names = {"特殊召唤" => @card.monster?,
"发动" => !@card.monster?,
"效果发动" => true, "效果发动" => true,
"加入手卡" => true, "加入手卡" => true,
"返回卡组" => true, "返回卡组" => true,
"从游戏中除外" => true "从游戏中除外" => true
} }
when 0..5 when 0..5
@index_card = @field.field[@index] @card = @field.field[@index]
@action_names = {"效果发动" => true, @action_names = {"效果发动" => true,
"返回卡组" => true, "返回卡组" => true,
"送入墓地" => true, "送入墓地" => true,
...@@ -132,7 +135,7 @@ class Window_Field < Window ...@@ -132,7 +135,7 @@ class Window_Field < Window
"打开/盖伏" => true "打开/盖伏" => true
} }
when 6..10 when 6..10
@index_card = @field.field[@index] @card = @field.field[@index]
@action_names = {"攻/守形式转换" => true, @action_names = {"攻/守形式转换" => true,
"里侧/表侧转换" => true, "里侧/表侧转换" => true,
"转为里侧守备" => true, "转为里侧守备" => true,
...@@ -146,10 +149,10 @@ class Window_Field < Window ...@@ -146,10 +149,10 @@ class Window_Field < Window
"送入对手墓地" => true "送入对手墓地" => true
} }
when Integer #手卡 when Integer #手卡
@index_card = @field.hand[@index-11] @card = @field.hand[@index-11]
@action_names = {"召唤" => @index_card.monster?, @action_names = {"召唤" => @card.monster?,
"特殊召唤" => false, "特殊召唤" => false,
"发动" => @index_card.spell?, "发动" => @card.spell?,
"放置到场上" => true, "放置到场上" => true,
"放回卡组顶端" => true, "放回卡组顶端" => true,
"送入墓地" => true, "送入墓地" => true,
...@@ -158,7 +161,7 @@ class Window_Field < Window ...@@ -158,7 +161,7 @@ class Window_Field < Window
} }
end end
$scene.action_window.list = @action_names $scene.action_window.list = @action_names
$scene.cardinfo_window.card = @index_card $scene.cardinfo_window.card = @card
$scene.action_window.x = @x + @items[@index][0] - ($scene.action_window.width - @items[@index][2])/2 $scene.action_window.x = @x + @items[@index][0] - ($scene.action_window.width - @items[@index][2])/2
$scene.action_window.y = @y + @items[@index][1] - $scene.action_window.viewport[3]#height $scene.action_window.y = @y + @items[@index][1] - $scene.action_window.viewport[3]#height
end end
...@@ -192,35 +195,106 @@ class Window_Field < Window ...@@ -192,35 +195,106 @@ class Window_Field < Window
case $scene.action_window.index case $scene.action_window.index
when 0 when 0
Action::Draw.new(true).run Action::Draw.new(true).run
when 1
Action::Shuffle.new.run
when 2
p "未实现"
#Action::Draw.new(true).run
when 3
p "未实现"
when 4
Action::SendToGraveyard.new(true, :deck, @card).run
when 5
Action::Remove.new(true, :deck, @card).run
when 6
p "未实现"
when 7
p "未实现"
when 8
p "未实现"
when 9
p "未实现"
end
when :extra
case $scene.action_window.index
when 0
if pos = @field.empty_field(@card)
Action::SpecialSummon.new(true, :extra, pos, @card, :attack).run
else
p "场位已满"
end
when 1
Action::Effect_Activate.new(true, :extra, @card).run
when 2
Action::Remove.new(true, :extra, @card).run
when 3
Action::SendToGraveyard.new(true, :extra, @card).run
end
when :removed
# @action_names = {"特殊召唤" => @card.monster?,
# "发动" => !@card.monster?,
# "效果发动" => true,
# "加入手卡" => true,
# "返回卡组" => true,
# "送入墓地" => true
case $scene.action_window.index
when 0 #特殊召唤
if pos = @field.empty_field(@card)
Action::Summon.new(true, :removed, pos, @card).run
else
p "场位已满"
end
when 1 #发动
if pos = @field.empty_field(@card)
Action::Activate.new(true, :removed, pos, @card).run
else
p "场位已满"
end
when 2 #效果发动
Action::Effect_Activate.new(true, :removed, @card).run
when 3 #加入手卡
Action::ReturnToHand.new(true, :removed, @card).run
when 4
Action::ReturnToDeck.new(true, :removed, @card).run
when 5
Action::SendToGraveyard.new(true, :removed, @card).run
end end
when 0..10 when 0..10
#场上 #场上
when Integer #手卡 when Integer #手卡
case $scene.action_window.index case $scene.action_window.index
when 0 #召唤 when 0 #召唤
if pos = @field.empty_field(@index_card) if pos = @field.empty_field(@card)
Action::Summon.new(true, :hand, pos, @index_card).run Action::Summon.new(true, :hand, pos, @card).run
else else
p "场位已满" p "场位已满"
end end
when 1 #特殊召唤 when 1 #特殊召唤
if pos = @field.empty_field(@index_card) if pos = @field.empty_field(@card)
Action::SpecialSummon.new(true, :hand, pos, @index_card, :attack).run Action::SpecialSummon.new(true, :hand, pos, @card, :attack).run
else else
p "场位已满" p "场位已满"
end end
when 2 #发动 when 2 #发动
if pos = @field.empty_field(@index_card) if pos = @field.empty_field(@card)
Action::Activate.new(true, :hand, pos, @index_card).run Action::Activate.new(true, :hand, pos, @card).run
else else
p "场位已满" p "场位已满"
end end
when 3 #放置 when 3 #放置
if pos = @field.empty_field(@index_card) if pos = @field.empty_field(@card)
Action::Set.new(true, :hand, pos, @index_card).run Action::Set.new(true, :hand, pos, @card).run
else else
p "场位已满" p "场位已满"
end end
when 4 #返回卡组
Action::ReturnToDeck.new(true, :hand, @card).run
when 5 #送入墓地
Action::SendToGraveyard.new(true, :hand, @card).run
when 6 #从游戏中除外
Action::Remove.new(true, :hand, @card).run
when 7 #效果发动
Action::Effect_Activate.new(true, :hand, @card).run
end end
end end
@index = nil @index = nil
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment