Commit 912ec683 authored by zh99998's avatar zh99998

临时提交

parent a5f345be
== mycard == mycard
这是一个游戏王对战器,与nbx和iduel协议兼容,目前开发进度50% 这是一个游戏王对战器,与nbx和iduel协议兼容,目前开发进度60%
\ No newline at end of file 最新release版本号v2.0.1,实现了观战。
\ No newline at end of file
#<TypeError: can't convert false into Integer>
/home/zh99998/NetBeansProjects/mycard/lib/main.rb:13:in `|'
/home/zh99998/NetBeansProjects/mycard/lib/main.rb:13:in `<main>'
\ No newline at end of file
#!/bin/sh
echo "#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Name=mycard
Name[zh_CN]=萌卡
Comment=a card game
Comment[zh_CN]=卡片游戏对战客户端
Exec=ruby lib/main.rb
Terminal=false
Icon=$(dirname "$0")/graphics/system/icon.gif
Type=Application
Categories=Game
Path=$(dirname "$0")" > ~/.local/share/applications/mycard.desktop
...@@ -84,7 +84,6 @@ class Action ...@@ -84,7 +84,6 @@ class Action
@position = position @position = position
end end
def run def run
p @card, self
from_field = case @from_pos from_field = case @from_pos
when 0..10 when 0..10
player_field.field player_field.field
...@@ -101,8 +100,7 @@ class Action ...@@ -101,8 +100,7 @@ class Action
when :removed when :removed
player_field.removed player_field.removed
else else
puts '奇怪的from_field' $log.warn __FILE__, '奇怪的from_field'
puts
end end
from_pos = if @from_pos.is_a? Integer from_pos = if @from_pos.is_a? Integer
...@@ -151,7 +149,7 @@ class Action ...@@ -151,7 +149,7 @@ class Action
end end
else else
card = @card == :deck ? player_field.deck.first : Game_Card.new(@card) card = @card == :deck ? player_field.deck.first : Game_Card.new(@card)
puts "似乎凭空产生了卡片?" $log.info "似乎凭空产生了卡片?"
p self p self
end end
if @position if @position
...@@ -294,7 +292,6 @@ class Action ...@@ -294,7 +292,6 @@ class Action
if @field[pos] if @field[pos]
player_field.field[pos] ||= Game_Card.new(@field[pos][:card]) player_field.field[pos] ||= Game_Card.new(@field[pos][:card])
player_field.field[pos].card = @field[pos][:card] player_field.field[pos].card = @field[pos][:card]
p player_field.field[pos].card
player_field.field[pos].position = @field[pos][:position] player_field.field[pos].position = @field[pos][:position]
else else
player_field.field[pos] = nil player_field.field[pos] = nil
...@@ -363,10 +360,10 @@ class Action ...@@ -363,10 +360,10 @@ class Action
class Unknown < Action class Unknown < Action
def initialize(str) def initialize(str)
@str = str @str = str
puts 'unkonwn action ' + str $log.info 'unkonwn action ' + str
end end
def run def run
puts 'unkonwn action run ' + @str $log.info 'unkonwn action run ' + @str
end end
end end
def self.reset def self.reset
......
...@@ -5,7 +5,7 @@ class Game_Card ...@@ -5,7 +5,7 @@ class Game_Card
@@count = 0 @@count = 0
def initialize(card=nil) def initialize(card=nil)
@@count += 1 @@count += 1
puts "创建活动卡片<#{card ? card.name : '??'}>,共计#{@@count}张" $log.info "创建活动卡片<#{card ? card.name : '??'}>,共计#{@@count}张"
@card = card || Card.find(nil) @card = card || Card.find(nil)
reset reset
end end
......
...@@ -129,8 +129,8 @@ class Game_Event ...@@ -129,8 +129,8 @@ class Game_Event
def initialize(title, message) def initialize(title, message)
@title = title @title = title
@message = message @message = message
puts @title $log.info @title
puts @message $log.info @message
end end
end end
class Unknown < Error class Unknown < Error
......
...@@ -171,7 +171,6 @@ class Action ...@@ -171,7 +171,6 @@ class Action
from_player = nil from_player = nil
case str case str
when /^\[(\d+)\] (.*)$/m when /^\[(\d+)\] (.*)$/m
#p $2, $2.match(/(◎|●)→=\[0:0:0\]==回合结束==<(\d+)>=\[\d+\]\n#{FieldFilter}(.*)/)
id = $1.to_i id = $1.to_i
result = case $2 result = case $2
when /^┊(.*)┊$/m when /^┊(.*)┊$/m
......
...@@ -183,7 +183,7 @@ class Game_Event ...@@ -183,7 +183,7 @@ class Game_Event
end end
class Unknown class Unknown
def self.parse(*args) def self.parse(*args)
puts '--------Unknown Iduel Event-------' $log.info '--------Unknown Iduel Event-------'
p $1, $2, args p $1, $2, args
end end
end end
......
...@@ -26,7 +26,7 @@ class Iduel < Game ...@@ -26,7 +26,7 @@ class Iduel < Game
recv @conn.gets(RS) while @conn recv @conn.gets(RS) while @conn
rescue rescue
Game_Event.push Game_Event::Error.new($!.class.to_s, $!.message) Game_Event.push Game_Event::Error.new($!.class.to_s, $!.message)
puts $!.backtrace $log.info $!.backtrace
ensure ensure
exit exit
end end
...@@ -76,7 +76,7 @@ class Iduel < Game ...@@ -76,7 +76,7 @@ class Iduel < Game
def send(head, *args) def send(head, *args)
return unless @conn return unless @conn
info = "##{head.to_s(16).upcase}|#{args.join(',')}" + RS info = "##{head.to_s(16).upcase}|#{args.join(',')}" + RS
puts "<< #{info}" $log.info "<< #{info}"
info.gsub!("\n", "\r\n") info.gsub!("\n", "\r\n")
(@conn.write info) rescue Game_Event.push Game_Event::Error.new($!.class.to_s, $!.message) (@conn.write info) rescue Game_Event.push Game_Event::Error.new($!.class.to_s, $!.message)
end end
...@@ -88,7 +88,7 @@ class Iduel < Game ...@@ -88,7 +88,7 @@ class Iduel < Game
else else
info.chomp!(RS) info.chomp!(RS)
info.delete!("\r") info.delete!("\r")
puts ">> #{info}" $log.info ">> #{info}"
Game_Event.push Game_Event.parse info Game_Event.push Game_Event.parse info
end end
end end
......
#encoding: UTF-8 #encoding: UTF-8
begin
#仅用于调试 #读取配置文件
Windows = RUBY_PLATFORM["mingw"] || RUBY_PLATFORM["mswin"] require 'yaml'
if Windows $config = YAML.load_file("config.yml") rescue YAML.load_file("data/config_default.yml")
STDOUT.set_encoding "GBK", "UTF-8", :invalid => :replace, :undef => :replace
end #初始化SDL
require 'sdl'
def filesize_inspect(size) include SDL
case size SDL.init(INIT_VIDEO | INIT_AUDIO)
when 0...1024 WM::set_caption("MyCard", "graphics/system/icon.gif")
size.to_s + "B" WM::icon = Surface.load("graphics/system/icon.gif")
when 1024...1024*1024 $screen = Screen.open($config["width"], $config["height"], 0, HWSURFACE | $config["fullscreen"] ? FULLSCREEN : 0)
(size/1024).to_s + "KB" Mixer.open(Mixer::DEFAULT_FREQUENCY,Mixer::DEFAULT_FORMAT,Mixer::DEFAULT_CHANNELS,512)
else TTF.init
(size/1024/1024).to_s + "MB"
end #初始化标题场景
require_relative 'scene_title'
$scene = Scene_Title.new
#初始化日志
require 'logger'
$log = Logger.new(STDOUT)
$log.info("main"){"初始化成功"}
rescue Exception => exception
open('error-程序出错请到论坛反馈.txt', 'w'){|f|f.write ([exception.inspect] + exception.backtrace).join("\n")}
exit(1)
end end
require 'sdl'
include SDL
require 'yaml'
$config = YAML.load_file("config.yml") rescue YAML.load_file("data/config_default.yml")
SDL.init(INIT_VIDEO | INIT_AUDIO)
WM::set_caption("MyCard", "graphics/system/icon.gif")
WM::icon = Surface.load("graphics/system/icon.gif")
style = HWSURFACE
style |= FULLSCREEN if $config["fullscreen"]
$screen = Screen.open($config["width"], $config["height"], 0, style)
TTF.init
Mixer.open(Mixer::DEFAULT_FREQUENCY,Mixer::DEFAULT_FORMAT,Mixer::DEFAULT_CHANNELS,512)
require_relative 'scene'
require_relative 'window'
require_relative 'window_list'
require_relative 'window_user'
require_relative 'scene_title'
require_relative 'fpstimer'
require_relative 'widget_msgbox'
require_relative 'game'
require_relative 'game_event'
require_relative 'cacheable'
require_relative 'user'
require_relative 'room'
$fpstimer = FPSTimer.new
$scene = Scene_Title.new
begin begin
$scene.main while $scene $scene.main while $scene
#rescue rescue Exception => exception
# p $!, $!.backtrace exception.backtrace.each{|backtrace|break if backtrace =~ /^(.*)\.rb:\d+:in `.*'"$/} #由于脚本是从main.rb开始执行的,总会有个能匹配成功的文件
# Widget_Msgbox.new("程序出错", "程序可能出现了一个bug,请去论坛反馈") { $scene = Scene_Title.new } $log.fatal($1){[$scene.inspect, exception.backtrace.inspect].join("\n")}
# retry require_relative 'scene_error'
$scene = Scene_Error.new
retry
ensure
$log.close
end end
\ No newline at end of file
...@@ -67,7 +67,7 @@ class NBX < Game ...@@ -67,7 +67,7 @@ class NBX < Game
end end
def recv_room(info) def recv_room(info)
info.chomp!(RS) info.chomp!(RS)
puts ">> #{info}" $log.info ">> #{info}"
Game_Event.push Game_Event.parse info Game_Event.push Game_Event.parse info
end end
def refresh def refresh
...@@ -91,7 +91,7 @@ class NBX < Game ...@@ -91,7 +91,7 @@ class NBX < Game
end end
def recv(info, addrinfo) def recv(info, addrinfo)
puts ">> #{info} -- #{addrinfo[2]}" $log.info ">> #{info} -- #{addrinfo[2]}"
Socket.ip_address_list.each do |localhost_addrinfo| Socket.ip_address_list.each do |localhost_addrinfo|
if localhost_addrinfo.ip_address == addrinfo[3] if localhost_addrinfo.ip_address == addrinfo[3]
addrinfo[2] = 'localhost' addrinfo[2] = 'localhost'
......
...@@ -3,10 +3,11 @@ ...@@ -3,10 +3,11 @@
#------------------------------------------------------------------------------ #------------------------------------------------------------------------------
#  游戏中全部画面的超级类。 #  游戏中全部画面的超级类。
#============================================================================== #==============================================================================
require 'fpstimer'
class Scene class Scene
attr_reader :windows attr_reader :windows
attr_reader :background attr_reader :background
@@fpstimer = FPSTimer.new
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
# ● 主处理 # ● 主处理
#-------------------------------------------------------------------------- #--------------------------------------------------------------------------
...@@ -14,7 +15,7 @@ class Scene ...@@ -14,7 +15,7 @@ class Scene
start start
while $scene == self while $scene == self
update update
$fpstimer.wait_frame do @@fpstimer.wait_frame do
if @background if @background
$screen.put(@background,0,0) $screen.put(@background,0,0)
else else
...@@ -23,7 +24,7 @@ class Scene ...@@ -23,7 +24,7 @@ class Scene
@windows.each do |window| @windows.each do |window|
window.draw($screen) window.draw($screen)
end end
@font.draw_blended_utf8($screen, "%.1f" % $fpstimer.real_fps, 0, 0, 0xFF, 0xFF, 0xFF) @font.draw_blended_utf8($screen, "%.1f" % @@fpstimer.real_fps, 0, 0, 0xFF, 0xFF, 0xFF)
$screen.update_rect(0,0,0,0) $screen.update_rect(0,0,0,0)
end end
end end
......
...@@ -10,14 +10,6 @@ class Scene_Config < Scene ...@@ -10,14 +10,6 @@ class Scene_Config < Scene
def start def start
@background = Surface.load "graphics/config/background.png" @background = Surface.load "graphics/config/background.png"
@config_window = Window_Config.new(0,0) @config_window = Window_Config.new(0,0)
#全屏模式
#p $config
#
#
#
#
#$scene = Scene_Title.new
end end
def handle(event) def handle(event)
case event case event
......
require 'widget_msgbox'
class Scene_Error < Scene
def start
Widget_Msgbox.new("程序出错", "似乎出现了一个bug,请到论坛反馈", :ok => "确定"){$scene = Scene_Title.new}
end
end
...@@ -91,8 +91,8 @@ class Scene_Hall < Scene ...@@ -91,8 +91,8 @@ class Scene_Hall < Scene
#when Game_Event::QROOMOK #when Game_Event::QROOMOK
# @joinroom_msgbox.message = "读取房间信息" if @joinroom_msgbox && !@joinroom_msgbox.destroyed? # @joinroom_msgbox.message = "读取房间信息" if @joinroom_msgbox && !@joinroom_msgbox.destroyed?
else else
puts "---unhandled game event----" $log.info "---unhandled game event----"
p event $log.debug event
end end
end end
......
...@@ -36,7 +36,7 @@ class Scene_Login < Scene ...@@ -36,7 +36,7 @@ class Scene_Login < Scene
when Game_Event::Error when Game_Event::Error
Widget_Msgbox.new(event.title, event.message, :ok => "确定"){$scene = Scene_Title.new} Widget_Msgbox.new(event.title, event.message, :ok => "确定"){$scene = Scene_Title.new}
else else
p event $log.debug event
end end
end end
end end
......
...@@ -6,7 +6,6 @@ ...@@ -6,7 +6,6 @@
#============================================================================== #==============================================================================
class Scene_Title < Scene class Scene_Title < Scene
require_relative 'window_title' require_relative 'window_title'
require_relative 'widget_inputbox'
def start def start
title = Dir.glob("graphics/titles/title_*.*") title = Dir.glob("graphics/titles/title_*.*")
......
...@@ -55,7 +55,6 @@ class Widget_ScrollBar < Window ...@@ -55,7 +55,6 @@ class Widget_ScrollBar < Window
end end
end end
def mousemoved(x,y) def mousemoved(x,y)
#p x,y
case y-@y case y-@y
when 0...20 #上按钮 when 0...20 #上按钮
self.index = :up self.index = :up
...@@ -69,7 +68,6 @@ class Widget_ScrollBar < Window ...@@ -69,7 +68,6 @@ class Widget_ScrollBar < Window
p @index p @index
#case index #case index
#when :up #when :up
#p "up"
#end #end
end end
end end
...@@ -6,6 +6,7 @@ ...@@ -6,6 +6,7 @@
class Window_Chat < Window class Window_Chat < Window
require_relative 'widget_scrollbar' require_relative 'widget_scrollbar'
require_relative 'widget_inputbox'
User_Color = [0,0,0xFF] User_Color = [0,0,0xFF]
Text_Color = [0,0,0] Text_Color = [0,0,0]
def initialize(x, y, width, height) def initialize(x, y, width, height)
......
...@@ -94,4 +94,14 @@ class Window_Config < Window ...@@ -94,4 +94,14 @@ class Window_Config < Window
$scene = Scene_Title.new $scene = Scene_Title.new
end end
end end
def filesize_inspect(size)
case size
when 0...1024
size.to_s + "B"
when 1024...1024*1024
(size/1024).to_s + "KB"
else
(size/1024/1024).to_s + "MB"
end
end
end end
\ No newline at end of file
...@@ -39,15 +39,7 @@ class Window_Info < Sprite ...@@ -39,15 +39,7 @@ class Window_Info < Sprite
# refresh # refresh
#end #end
def refresh def refresh
#p "-------------Read start-----------"
#@user.avatar{|avatar| self.contents[1] = avatar; p "-------------read end-----------" }
#p self.contents[1] = @user.avatar(:middle)
#p @user
#contents[0].clear
#@list.each_with_index do |player, index|
#contents[0].draw_text(player.name, 0, 16*index)
#end
end end
end end
......
...@@ -44,11 +44,8 @@ class Window_List < Window ...@@ -44,11 +44,8 @@ class Window_List < Window
refresh refresh
end end
def refresh def refresh
#p @list
clear clear
#@contents.fill_rect(0,0,@width,@height,0x66000000)
#p @item_max
@item_max.times do |index| @item_max.times do |index|
draw_item(index, index==@index ? 1 : 0) draw_item(index, index==@index ? 1 : 0)
end end
......
...@@ -15,7 +15,6 @@ class Window_UserList < Window_List ...@@ -15,7 +15,6 @@ class Window_UserList < Window_List
@color = [0x03, 0x11, 0x22] @color = [0x03, 0x11, 0x22]
@color_over = [0x03, 0x11, 0x22, 200,200,255] @color_over = [0x03, 0x11, 0x22, 200,200,255]
@color_click = [200,200,255, 0x03, 0x11, 0x22] @color_click = [200,200,255, 0x03, 0x11, 0x22]
#p @contents.alpha
#@contents.set_alpha(RLEACCEL, 80) #@contents.set_alpha(RLEACCEL, 80)
@contents.fill_rect(0,0,@width,@height,0xFFFFFFFF) @contents.fill_rect(0,0,@width,@height,0xFFFFFFFF)
self.list = list self.list = list
......
# Move to the script's dir
readlink $0 > /dev/null 2>&1
isLink=$?
if [ $isLink -eq 0 ]; then
cd $(dirname $(readlink $0))
else
cd $(dirname $0)
fi
echo ------------------ >> log.log
echo ------------------ >> err.log
ruby lib/main.rb 0>>log.log 2>>err.log
\ No newline at end of file
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