Partagez
Aller en bas
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Mini-jeu de poker avec double chance Empty Mini-jeu de poker avec double chance

le Lun 3 Jan 2011 - 16:49
J'avais l'intention de garder ceci pour le projet du forum mais comme il risque de ne jamais sortir ...

Voici un jeu de poker franchement beau .
Je n'en suis pas l'auteur , juste le traducteur (depuis le japonais!! merci google) . L'auteur s'appele Cacao .

Une petite image :
Mini-jeu de poker avec double chance Poker11
Oh , le beau brelan !

On peux doubler ses gains ensuite avec un autre mini-jeu .
Attention , on ne joue pas de l'or ! Mais des jetons (à la façon d'un pokemon) . Le nombre de jetons est contenu dans uen variable (17 dans mon cas mais ça se change) .

2 scripts à mettre l'un derriere l'autre . Respecter l'ordre surtout , c'est important .

Spoiler:

#******************************************************************************
#
# * Cacao Base Script
#
# --------------------------------------------------------------------------
# ????? : 1.2.2
# ? ? : RPG????VX : RGSS2
# ? ? ? : CACAO
# ? ? ? : http://cacaosoft.web.fc2.com/
# --------------------------------------------------------------------------
# == ? ? ==
#
# : CACAO???????????????????????
#
# --------------------------------------------------------------------------
# == ???? ==
#
# ? ????CACAO???????????????????
# ? ?????????????????????????
# ? ??????????????????????
#
#
#******************************************************************************


#/////////////////////////////////////////////////////////////////////////////#
# #
# ??????????????????? #
# #
#/////////////////////////////////////////////////////////////////////////////#


#==============================================================================
# ¦ ?????
#==============================================================================
module CAO; end
class CustomizeError < StandardError; end

#==============================================================================
# ¦ ????????
#==============================================================================
class Game_Temp
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_accessor :unsuccessful # ????????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias _cao_initialize_cbs initialize
def initialize
_cao_initialize_cbs
@unsuccessful = false
end
end

#==============================================================================
# ¦ ????
#==============================================================================
module CAO::ERROR
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
# ??????, ???, ?????, ??????, ????????
#--------------------------------------------------------------------------
def self.trace
if $! != nil && /^.+?Sad\d+)(?::in `(.*)')?/ =~ $@.first
line = $1.to_i
method = $2
section = $RGSS_SCRIPTS[caller.first.scan(/\d+/).first.to_i][1]
return [section, line, method, $!.class.to_s, $!.message]
end
raise RuntimeError, "????????????", caller
end
end

#==============================================================================
# ¦ ?????
#==============================================================================
module CAO::Commands
module_function
#--------------------------------------------------------------------------
# ? ?????????????
#--------------------------------------------------------------------------
def get_time_total
return Graphics.frame_count / Graphics.frame_rate
end
#--------------------------------------------------------------------------
# ? ????????(??)
# ??????????
#--------------------------------------------------------------------------
def get_time_ary
h = get_time_total / 3600
m = get_time_total / 60 % 60
s = get_time_total % 60
return h, m, s
end
#--------------------------------------------------------------------------
# ? ????????(???)
#--------------------------------------------------------------------------
def get_time_str
time = get_time_ary
return sprintf("%2d:%02d:%02d", time[0], time[1], time[2])
end
end


#==============================================================================
# ¦ Cache
#==============================================================================
module Cache
#--------------------------------------------------------------------------
# ? ???????????
# filename : ?????
#--------------------------------------------------------------------------
def self.bitmap?(filename)
@cache = {} if @cache == nil
path = "cao_cache_" + filename
return !@cache[path].disposed? if @cache.include?(path)
return false
end
#--------------------------------------------------------------------------
# ? ?? ?????????
# filename : ?????
# bitmap : ??????
#--------------------------------------------------------------------------
def self.set_bitmap(filename, bitmap)
@cache["cao_cache_" + filename] = bitmap
end
#--------------------------------------------------------------------------
# ? ?? ?????????
# filename : ?????
# error : ???????????
#--------------------------------------------------------------------------
def self.get_bitmap(filename, error = true)
path = "cao_cache_" + filename
if error && (!@cache.include?(path) || @cache[path].disposed?)
print "ERROR!\n "#{filename}" ??????????????"
exit
end
return @cache[path]
end
#--------------------------------------------------------------------------
# ? ?? ?????????
# filename : ?????
#--------------------------------------------------------------------------
def self.clear_bitmap(filename)
path = "cao_cache_" + filename
@cache[path].dispose if @cache[path]
@cache.delete(path)
end
end
class Bitmap
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def set_cache(filename)
Cache.set_bitmap(filename, self)
end
end


#==============================================================================
# ¦ ?????????
#==============================================================================
class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias _cbs_update_scene_change update_scene_change
def update_scene_change
return if $game_player.moving? # ??????????
update_scene_change_cao
_cbs_update_scene_change
end
#--------------------------------------------------------------------------
# ? ?????????
# ? alias ???????????
#--------------------------------------------------------------------------
def update_scene_change_cao
end
end

class CAO::Window_Command < Window_Selectable
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_reader :commands # ????
attr_accessor :align # ???????
#--------------------------------------------------------------------------
# ? ?????????
# x : ?????? X ??
# y : ?????? Y ??
# width : ???????
# height : ???????? (0:???????)
# commands : ??????????
# align : ??????? (0..????1..?????2..???)
# column_max : ?? (2 ???????)
# row_max : ?? (0:??????????)
# spacing : ??????????????
#--------------------------------------------------------------------------
def initialize(x, y, width, height, commands,
align = 0, column_max = 1, row_max = 0, spacing = 32)
if height == 0
if row_max == 0
row_max = (commands.size + column_max - 1) / column_max
end
height = row_max * WLH + 32
end
super(x, y, width, height, spacing)
@commands = commands
@item_max = commands.size
@column_max = column_max
@align = align
refresh
self.index = 0
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
# enabled : ??????false ?????????
#--------------------------------------------------------------------------
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, @commands[index], @align)
end
end

#==============================================================================
# ¦ ????????????
#==============================================================================
class Scene_InterruptBase < Scene_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize
@exit = false # ????????
@result = nil # ????
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def main
start # ????
perform_transition # ?????????
post_start # ?????
Input.update # ???????
loop do
Graphics.update # ????????
Input.update # ???????
update # ??????
break if @exit # ??????????????
end
Graphics.update
pre_terminate # ?????
terminate # ????
Input.update # ???????
return @result # ???????
end
#--------------------------------------------------------------------------
# ? ????????????
# ????????????????????????????
#--------------------------------------------------------------------------
def create_menu_background
@menuback_sprite = Sprite.new
@menuback_sprite.bitmap = $game_temp.background_bitmap
@menuback_sprite.color.set(16, 16, 16, 128)
@menuback_sprite.z = 100
update_menu_background
end
end


#==============================================================================
# ¦ ???????
#==============================================================================
class Game_Map
$data_mapinfos = load_data("Data/MapInfos.rvdata") unless $data_mapinfos
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def name(check_area = true)
return convert_text(get_map_name(check_area).dup)
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def convert_text(text)
text.sub!(/^[!$&%*@]/, "") while (/^[!$&%*@]/ =~ text)
text.gsub!(/<%.*?>/i, "")
text.gsub!(/#\{.*?\}/i, "")
text.gsub!(/#.*/i, "")
text.strip!
return text
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def get_map_name(check_area = true)
return $data_mapinfos[$game_map.map_id].name unless check_area
for area in $data_areas.values
if in_area?(area)
break if /^\!/ =~ area.name
return area.name
end
end
return $data_mapinfos[$game_map.map_id].name
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def get_area_name(convert = false)
name = []
for area in $data_areas.values
name << area.name.dup if in_area?(area)
end
name.each {|t| convert_text(t)} if convert
return name
end
#--------------------------------------------------------------------------
# ? ??????
# area : ?????? (RPG::Area)
#--------------------------------------------------------------------------
def in_area?(area)
x, y = $game_player.x, $game_player.y
return false if area == nil
return false if $game_map.map_id != area.map_id
return false if x < area.rect.x
return false if y < area.rect.y
return false if x >= area.rect.x + area.rect.width
return false if y >= area.rect.y + area.rect.height
return true
end
end


#==============================================================================
# ¦ ??????
#==============================================================================
module Vocab
# ???
def self.exp
return "???"
end
# ??????
def self.exp_a
return "E"
end
end
class Game_Actor < Game_Battler
#--------------------------------------------------------------------------
# ? ????????????????
#--------------------------------------------------------------------------
def level_up_exp
return (@level < 99) ? (@exp_list[@level + 1] - @exp_list[@level]) : 0
end
#--------------------------------------------------------------------------
# ? ??????????????????
#--------------------------------------------------------------------------
def next_rest_exp
return (@exp_list[@level+1] > 0) ? (@exp_list[@level+1] - @exp) : 0
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def level_exp
return level_up_exp - next_rest_exp
end
end
class Window_Base < Window
#--------------------------------------------------------------------------
# ? EXP ???????
# actor : ????
#--------------------------------------------------------------------------
def exp_color(actor)
return power_up_color if actor.next_rest_exp < actor.level_up_exp / 4
return normal_color
end
#--------------------------------------------------------------------------
# ? EXP ????? 1 ???
#--------------------------------------------------------------------------
def exp_gauge_color1
return text_color(28)
end
#--------------------------------------------------------------------------
# ? EXP ????? 2 ???
#--------------------------------------------------------------------------
def exp_gauge_color2
return text_color(29)
end
#--------------------------------------------------------------------------
# ? ??????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_exp(actor, x, y, width = 120)
draw_actor_exp_gauge(actor, x, y, width)
self.contents.font.color = system_color
text = (width < 170 ? Vocab.exp_a : Vocab.exp)
self.contents.draw_text(x, y, 60, WLH, text)
xr = x + width
if width < 130
self.contents.font.color = exp_color(actor)
self.contents.draw_text(xr - 60, y, 60, WLH, actor.next_rest_exp, 2)
else
self.contents.font.color = exp_color(actor)
self.contents.draw_text(xr - 110, y, 50, WLH, actor.level_exp, 2)
self.contents.font.color = normal_color
self.contents.draw_text(xr - 60, y, 10, WLH, "/", 1)
self.contents.draw_text(xr - 50, y, 50, WLH, actor.level_up_exp, 2)
end
end
#--------------------------------------------------------------------------
# ? ?????????
# actor : ????
# x : ??? X ??
# y : ??? Y ??
# width : ?
#--------------------------------------------------------------------------
def draw_actor_exp_gauge(actor, x, y, width = 120)
gw = width * actor.level_exp / [actor.level_up_exp, 1].max
gc1 = exp_gauge_color1
gc2 = exp_gauge_color2
self.contents.fill_rect(x, y + WLH - 8, width, 6, gauge_back_color)
self.contents.gradient_fill_rect(x, y + WLH - 8, gw, 6, gc1, gc2)
end
end

Spoiler:

#******************************************************************************
#
# * cacao poker
#
# --------------------------------------------------------------------------
# version : 1.0.5
# pour : RPGmakerVX : RGSS2
# auteur : CACAO , traduit par dricc
# site web : http://cacaosoft.web.fc2.com/
# --------------------------------------------------------------------------
# == ?? ==
#
# : ?????????????????????
#
# --------------------------------------------------------------------------
# == cacao poker ==
#
# Necessite le Cacao Base Script
#
# --------------------------------------------------------------------------
# == ???? ==
#
# ? ???????
# ?????? "??????" ???
#
# ? ??????
# ??????????????????????????
# ? ????????????????????????
#
# --------------------------------------------------------------------------
# == ressource ==
#
# image necessaire :
# 504 x 192 (Trump.png)dans "Graphics/System" : obligatoire
# 544 x 416 (BackPoker.png) dans "Graphics/System" : optionnel
#
#
#******************************************************************************


#==============================================================================
# ? ??????
#==============================================================================

module CAO_POKER
#--------------------------------------------------------------------------
# num de la variable qu contient l'argent
#--------------------------------------------------------------------------
VAR_COIN = 17
#--------------------------------------------------------------------------
# mettre false pour utiliser une image de fond
#--------------------------------------------------------------------------
WINDOW_OPACITY = false
#--------------------------------------------------------------------------
# gains
#--------------------------------------------------------------------------
# ?????? n ????????
# ?????????0 ?????????????
#--------------------------------------------------------------------------
POKER_WINNING = [0, 1.1, 2, 3, 5, 7, 10, 50, 100, 500]
#--------------------------------------------------------------------------
# ? ??????(["?????, ???"])
#--------------------------------------------------------------------------
SOUND_COIN = ["Shop", 100] # ????????
SOUND_PO = ["Chime2", 100] # ???????
SOUND_PX = ["Crow", 100] # ??????????
SOUND_WC1O = ["Chime2", 100] # ??????????
SOUND_WC3O = ["Chicken", 100] # ????????????
SOUND_WCX = ["Jump2", 100] # ??????????
#--------------------------------------------------------------------------
# ? BGM???
#--------------------------------------------------------------------------
# BGM???????????????????nil ???
#--------------------------------------------------------------------------
BGM_WC_NAME = "Scene9" # ????????
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
# ???????
NUMBER_TEXT = "Votre Mise"
# ??????
NAME_COIN = "$"
# ??(10?)
POKER_NAME = [
"Rien", "Paire", "2 Paires", "Brelan",
"Suite", "Couleur", "Full", "carré",
"Suite Souleur", "Suite Couleur Royale"
]
# ?????????(2?)
CMD_NAME = [
["Confirmer remplacement"],
["Continuer", "Stop"],
["Tenter de doubler", "Garder"]
]
# ??????????????(Scene_Poker#update_help_window)
# ????????????(Window_Poker#start_double_chance)
end


#/////////////////////////////////////////////////////////////////////////////#
# #
# ?????????????????????? #
# #
#/////////////////////////////////////////////////////////////////////////////#


class Scene_Map < Scene_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
alias _update_scene_change_cao_poker update_scene_change_cao
def update_scene_change_cao
_update_scene_change_cao_poker
if $game_temp.next_scene == "poker"
$game_temp.map_bgm = RPG::BGM.last
$game_temp.next_scene = nil
$scene = Scene_Poker.new
end
end
end

class Game_Interpreter
#--------------------------------------------------------------------------
# ? ???
#--------------------------------------------------------------------------
alias _cao_command_118_poker command_118
def command_118
# if /^??????/ =~ @params[0]
if @params[0] == "poker"
$game_temp.next_scene = "poker"
else
return _cao_command_118_poker
end
return true
end
end

class Window_Coin < Window_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(x, y)
super(x, y, 160, WLH + 32)
self.opacity = CAO_POKER::WINDOW_OPACITY ? 255 : 0
refresh
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
rect = Rect.new(0, 0, self.width - 32, WLH)
rect.width -= 24
self.contents.draw_text(rect, $game_variables[CAO_POKERVAR_COIN], 2)
rect.x = rect.width
rect.width = 24
self.contents.draw_text(rect, CAO_POKER::NAME_COIN, 2)
end
end

class Window_PokerCommand < Window_Selectable
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
MODE_POKER = 0 # ????
MODE_AGAIN = 1 # ?????
MODE_WCHANCE = 2 # ???????
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_reader :commands # ????
attr_reader :mode # ???????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize(x, y, width)
super(x, y, width, WLH + 32, 16)
@mode = MODE_POKER
@item_max = CAO_POKER::CMD_NAME[@mode].size
@column_max = @item_max
refresh
self.index = -1
self.active = false
self.visible = false
self.opacity = CAO_POKER::WINDOW_OPACITY ? 255 : 0
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def mode=(val)
@mode = val
@index = 0
@item_max = CAO_POKER::CMD_NAME[@mode].size
@column_max = @item_max
refresh
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear
for i in 0...@item_max
draw_item(i)
end
end
#--------------------------------------------------------------------------
# ? ?????
# index : ????
# enabled : ??????false ?????????
#--------------------------------------------------------------------------
def draw_item(index, enabled = true)
rect = item_rect(index)
rect.x += 4
rect.width -= 8
self.contents.clear_rect(rect)
self.contents.font.color = normal_color
self.contents.font.color.alpha = enabled ? 255 : 128
self.contents.draw_text(rect, CAO_POKER::CMD_NAME[@mode][index], 1)
end
end

class Window_PokerNumber < Window_Base
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize
super(0, 360, 384, 56)
@number = 0
@digits_max = 6 # ??
@index = 5
self.z += 9999
self.opacity = CAO_POKER::WINDOW_OPACITY ? 255 : 0
clear
update_cursor
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def number
return @number
end
#--------------------------------------------------------------------------
# ? ?????
# number : ?????
#--------------------------------------------------------------------------
def number=(number)
@number = [[number, 0].max, 10 ** @digits_max - 1].min
@index = 0
refresh
end
#--------------------------------------------------------------------------
# ? ?????????
# wrap : ??????????
#--------------------------------------------------------------------------
def cursor_right(wrap)
if @index < @digits_max - 1 or wrap
@index = (@index + 1) % @digits_max
end
end
#--------------------------------------------------------------------------
# ? ?????????
# wrap : ??????????
#--------------------------------------------------------------------------
def cursor_left(wrap)
if @index > 0 or wrap
@index = (@index + @digits_max - 1) % @digits_max
end
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
if self.active
if Input.repeat?(Input::UP) or Input.repeat?(Input::DOWN)
Sound.play_cursor
place = 10 ** (@digits_max - 1 - @index)
n = @number / place % 10
@number -= n * place
n = (n + 1) % 10 if Input.repeat?(Input::UP)
n = (n + 9) % 10 if Input.repeat?(Input::DOWN)
@number += n * place
refresh
end
last_index = @index
if Input.repeat?(Input::RIGHT)
cursor_right(Input.trigger?(Input::RIGHT))
end
if Input.repeat?(Input::LEFT)
cursor_left(Input.trigger?(Input::LEFT))
end
if @index != last_index
Sound.play_cursor
end
update_cursor
end
end
#--------------------------------------------------------------------------
# ? ???
#--------------------------------------------------------------------------
def clear
self.contents.clear
self.contents.font.color = normal_color
self.contents.draw_text(0, 0, 180, WLH, "#{CAO_POKER::NUMBER_TEXT}", 1)
self.contents.draw_text(304, 0, 48, WLH, "#{CAO_POKER::NAME_COIN}", 1)
refresh
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
self.contents.clear_rect(192, 0, 100, WLH)
self.contents.font.color = normal_color
s = sprintf("%0*d", @digits_max, @number)
for i in 0...@digits_max
self.contents.draw_text(194 + i * 16, 0, 16, WLH, s[i,1], 1)
end
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def lose_coin
if $game_variables[CAO_POKERVAR_COIN] >= @number && @number != 0
$game_variables[CAO_POKERVAR_COIN] -= @number
return true
end
return false
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def update_cursor
self.cursor_rect.set(194 + @index * 16, 0, 16, WLH)
end
end

class Window_Poker < Window_Base
include CAO_POKER
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
MODE_POKER = 0 # ???????
MODE_WCHANCE = 1 # ??????????

CARD_WIDTH = 36 # ???1????
CARD_HEIGHT = 48 # ???1????
CARD_SPACING = 20 # ??????
CARD_ZOOM = 2 # ???????
#--------------------------------------------------------------------------
# ? ??????????
#--------------------------------------------------------------------------
attr_writer :bet # ?????????
attr_reader :mode # ????????????
attr_reader :chance # ????????????
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def initialize
super(0, 56, 544, 304)
self.active = false
self.opacity = WINDOW_OPACITY ? 255 : 0
clear
draw_rate
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def clear
@index = -1
@bet = 0
@mode = MODE_POKER
@chance = 0
create_card
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def start
draw_rate
5.times do |i| number_in_card(i) end
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def terminate
self.contents.clear
5.times {|i| @card[i].sprite.dispose }
clear
end
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
def dispose
self.contents.dispose
5.times {|i| @card[i].sprite.dispose }
super
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def start_double_chance
@chance += 1
@mode = MODE_WCHANCE
@index = 1
self.contents.clear
self.contents.font.color = normal_color
text = ["Tentez la double chance ?"]
text << " Choisissez une carte retournée"
text << " Si elle est plus grande que la premiere ,"
text << " vous doublez vos gains"
text << " Sinon vous perdez tout"
for i in 0...text.size
self.contents.draw_text(0, WLH * i, 512, WLH, text[i])
end
for i in 0...5
@card[i].open = (i == 0) ? true : false
@card[i].kind = @stock[0] # ?????
@stock.delete_at(0) # ???1???
number_in_card(i) # ??????
@card[i].sprite.y = 230
end
@card[@index].sprite.y = 220
end
#--------------------------------------------------------------------------
# ? ?????
#--------------------------------------------------------------------------
def draw_rate(index = 0)
self.contents.clear
self.contents.font.size = 18
for i in 0...10
x = i < 5 ? 0 : 264
y = WLH * (i % 5)
self.contents.font.color = normal_color
self.contents.font.color = Color.new(255, 0, 0) if i == index && i != 0
self.contents.draw_text(x, y, 170, WLH, POKER_NAME[i])
self.contents.draw_text(x + 170, y, 18, WLH, ":", 1)
self.contents.draw_text(x+188,y,60,WLH, (POKER_WINNING[i]*@bet).to_i,2)
end
self.contents.font.size = 20
end
#--------------------------------------------------------------------------
# ? ?????(???????)
#--------------------------------------------------------------------------
def draw_start_rate(bet)
self.contents.clear
self.contents.font.size = 18
for i in 0...10
x = i < 5 ? 0 : 264
y = WLH * (i % 5)
self.contents.font.color = normal_color
self.contents.draw_text(x, y, 170, WLH, POKER_NAME[i])
self.contents.draw_text(x + 170, y, 18, WLH, ":", 1)
self.contents.draw_text(x+188, y, 60, WLH, (POKER_WINNING[i]*bet).to_i, 2)
end
self.contents.font.size = 20
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def refresh
for i in 0...5
unless @card[i].open
@card[i].kind = @stock[0] # ?????
@stock.delete_at(0) # ???1???
@card[i].open = true # ??????
number_in_card(i) # ??????
end
end
index = check_card
draw_rate(index) if index > 0
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def create_card
# ??????(0xx~:???? x00~:1-13)
stock = Array.new(52) { |i| n = 100 * (i / 13) + i % 13 }
@stock = stock.sort_by{ rand } # ?????
# ??????(???????????)
card_set = Struct.new(:kind, :open, :sprite)
@card = []
for i in 0...5
@card[i] = card_set.new
# ??????
@card[i].kind = @stock[0]
# ??????
@stock.delete_at(0)
# ??????
@card[i].open = true
# ?????????
@card[i].sprite = Sprite.new
@card[i].sprite.bitmap = Bitmap.new(CARD_WIDTH, CARD_HEIGHT)
@card[i].sprite.zoom_x = CARD_ZOOM
@card[i].sprite.zoom_y = CARD_ZOOM
@card[i].sprite.y = 230
@card[i].sprite.z = self.z + 1
card_width = CARD_WIDTH * CARD_ZOOM
margin = (544 - (card_width * 5 + CARD_SPACING * 4)) / 2
@card[i].sprite.x = (card_width + CARD_SPACING) * i + margin
end
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def number_in_card(index)
rect = Rect.new(468, 0, CARD_WIDTH, CARD_HEIGHT)
if @card[index].open
rect.x = CARD_WIDTH * (@card[index].kind % 100)
rect.y = CARD_HEIGHT * (@card[index].kind / 100)
end
@card[index].sprite.bitmap.blt(0, 0, Cache.system("Trump"), rect)
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
last_index = @index
if @mode == MODE_POKER # ?????
if Input.repeat?(Input::RIGHT)
@index >= 4 ? @index = 0 : @index += 1
end
if Input.repeat?(Input::LEFT)
@index <= 0 ? @index = 4 : @index -= 1
end
if Input.trigger?(Input::C)
Sound.play_decision
rect = Rect.new(468, 0, CARD_WIDTH, CARD_HEIGHT)
@card[@index].open ^= true # ???????
number_in_card(@index)
end
else # ??????????
if Input.repeat?(Input::RIGHT)
@index >= 4 ? @index = 1 : @index += 1
end
if Input.repeat?(Input::LEFT)
@index <= 1 ? @index = 1 : @index -= 1
end
end
if @index != last_index
Sound.play_cursor
@card[last_index].sprite.y = 230
@card[@index].sprite.y = 220
end
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def update_card
if @index == -1
@index = 0
@card[@index].sprite.y = 220
else
@card[@index].sprite.y = 230
@index = -1
end
end
#--------------------------------------------------------------------------
# ? ???????
#--------------------------------------------------------------------------
def check_card
mark = Array.new(5) { |i| @card[i].kind / 100 }
number = Array.new(5) { |i| @card[i].kind % 100 }
number.sort!
# ??????
mark.delete(mark[4])
bool_mark = mark == []
# ?????
if number[0] == 0 && number[4] == 12
ary = [[9, 10, 11], [1, 10, 11], [1, 2, 11], [1, 2, 3]]
for i in 0...4
if number[1, 3] == ary[i]
boll_number = true
break
end
end
else
for i in 0...5
break unless number[2] - 2 + i == number[i]
boll_number = true if i == 4
end
end
if bool_mark && boll_number && number[1] == 9
# ??????????????
return 9
elsif bool_mark && boll_number
# ??????????
return 8
elsif bool_mark
# ?????
return 5
elsif boll_number
# ?????
return 4
end
for i in 0...5
n = number.clone
n.delete(number[i])
case n.size
when 1
# ??????
return 7
when 2
# ????? # ??????
return (n[0] == n[1]) ? 6 : 3
when 3
# ?????
return 6 if n == [n[0], n[0], n[0]]
# ????
return 2 if n[0] == n[1] || n[0] == n[2] || n[1] == n[2]
# ????
return 1
end
end
return 0
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def check_high
@card[@index].open = true # ????????
number_in_card(@index) # ??????
# ??????
return true if @card[0].kind % 100 < @card[@index].kind % 100
return false
end
end

class Scene_Poker < Scene_Base
include CAO_POKER
#--------------------------------------------------------------------------
# ? ??
#--------------------------------------------------------------------------
BGM_DOUBLE_CHANCE = BGM_WC_NAME ? RPG::BGM.new(BGM_WC_NAME) : nil
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def start
super
create_menu_background
@command_window = Window_PokerCommand.new(0, 360, 384)
@main_window = Window_Poker.new
@number_window = Window_PokerNumber.new
@coin_window = Window_Coin.new(384, 360)
@help_window = Window_Base.new(0, 0, 544, 56)
@help_window.opacity = WINDOW_OPACITY ? 255 : 0
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def terminate
super
dispose_menu_background
@command_window.dispose
@number_window.dispose
@coin_window.dispose
@help_window.dispose
@main_window.dispose
end
#--------------------------------------------------------------------------
# ? ??????
#--------------------------------------------------------------------------
def update
super
update_menu_background
update_help_window
@coin_window.update
if @main_window.active
update_card_select
@main_window.update
elsif @number_window.active
update_bet_input
elsif @command_window.active
update_command_select
@command_window.update
end
end
#--------------------------------------------------------------------------
# ? ????????????
#--------------------------------------------------------------------------
def create_menu_background
@menuback_sprite = Sprite.new
if WINDOW_OPACITY
@menuback_sprite.bitmap = $game_temp.background_bitmap
@menuback_sprite.color.set(16, 16, 16, 128)
else
@menuback_sprite.bitmap = Cache.system("BackPoker")
end
update_menu_background
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def update_bet_input
last_number = @number_window.number
@number_window.update
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
unless @number_window.lose_coin
Sound.play_buzzer
return
end
Audio.se_play("Audio/SE/" + SOUND_COIN[0], 100, SOUND_COIN[1])
@main_window.bet = @number_window.number
@coin_window.refresh
@number_window.active = false
@number_window.visible = false
@command_window.visible = true
@command_window.index = -1
@command_window.refresh
@main_window.active = true
@main_window.start
@main_window.update_card
end
if last_number != @number_window.number
@main_window.draw_start_rate(@number_window.number)
end
end
#--------------------------------------------------------------------------
# ? ????????
#--------------------------------------------------------------------------
def update_card_select
# ????????????????????????
if Input.trigger?(Input::DOWN) && @main_window.mode == 0
Sound.play_cursor
@main_window.update_card
@main_window.active = false
@command_window.index = 0
@command_window.active = true
end
# ??????????????
if Input.trigger?(Input::C) && @main_window.mode != 0
# ?????????????
if @main_window.check_high
if @main_window.chance == 3
Audio.se_play("Audio/SE/" + SOUND_WC3O[0], 100, SOUND_WC3O[1])
else
Audio.se_play("Audio/SE/" + SOUND_WC1O[0], 100, SOUND_WC1O[1])
end
$game_variables[VAR_COIN] += @gain_coin
@command_window.mode = Window_PokerCommand::MODE_WCHANCE
@command_window.active = true
@main_window.active = false
else
Audio.se_play("Audio/SE/" + SOUND_WCX[0], 100, SOUND_WCX[1])
$game_variables[VAR_COIN] = @chance_coin
@command_window.mode = Window_PokerCommand::MODE_AGAIN
@command_window.active = true
@main_window.active = false
end
@coin_window.refresh
if @main_window.chance == 3
@main_window.active = false
@command_window.active = true
@command_window.mode = Window_PokerCommand::MODE_AGAIN
end
$game_temp.map_bgm.play if BGM_DOUBLE_CHANCE
end
end
#--------------------------------------------------------------------------
# ? ?????????
#--------------------------------------------------------------------------
def update_command_select
if Input.trigger?(Input::UP) && @command_window.mode == 0
Sound.play_cursor
@main_window.update_card
@main_window.active = true
@command_window.index = -1
@command_window.active = false
end
if Input.trigger?(Input::C)
Sound.play_decision
case @command_window.mode
when Window_PokerCommand::MODE_POKER # ?????
@main_window.refresh
check_pat
when Window_PokerCommand::MODE_AGAIN # ???????
if @command_window.index == 0 # ???
@command_window.mode = Window_PokerCommand::MODE_POKER
# ??????????????
@command_window.active = false
@command_window.visible = false
@number_window.active = true
@number_window.visible = true
# ?????????????
@main_window.terminate
@main_window.draw_start_rate(@number_window.number)
else # ???
Sound.play_cancel
$scene = Scene_Map.new
end
when Window_PokerCommand::MODE_WCHANCE # ???????
if @command_window.index == 0 # ????
BGM_DOUBLE_CHANCE.play if BGM_DOUBLE_CHANCE
if @main_window.chance == 0
@chance_coin = $game_variables[VAR_COIN] - @gain_coin
end
@command_window.contents.clear
@command_window.active = false
@main_window.active = true
@main_window.start_double_chance
@command_window.index = -1
else # ?????
@chance_coin = 0
@command_window.mode = Window_PokerCommand::MODE_AGAIN
end
end
end
end
#--------------------------------------------------------------------------
# ? ????
#--------------------------------------------------------------------------
def check_pat
@gain_coin = 0
pat = @main_window.check_card
if pat > 0 # ?????????
Audio.se_play("Audio/SE/" + SOUND_PO[0], 100, SOUND_PO[1])
@gain_coin = (@number_window.number * POKER_WINNING[pat]).to_i
$game_variables[VAR_COIN] += @gain_coin
@command_window.mode = Window_PokerCommand::MODE_WCHANCE
else # ???????
Audio.se_play("Audio/SE/" + SOUND_PX[0], 100, SOUND_PX[1])
@command_window.mode = Window_PokerCommand::MODE_AGAIN
end
@coin_window.refresh
end
#--------------------------------------------------------------------------
# ? ???????????
#--------------------------------------------------------------------------
def update_help_window
if @main_window.active
if @main_window.mode == Window_Poker::MODE_POKER
t = "Choisissez les cartes à changer"
else
t = "????????1??????????"
end
elsif @number_window.active
t = "Entrez le nombre de pieces à miser"
elsif @command_window.active
case @command_window.mode
when Window_PokerCommand::MODE_POKER
t = "Remplacer les cartes face cachée"
when Window_PokerCommand::MODE_AGAIN
ary = ["Continuer", "Quitter"]
t = ary[@command_window.index]
when Window_PokerCommand::MODE_WCHANCE
ary = [ "En cas de succés , vous pouvez gagner #{@gain_coin} piéces",
"Double chance ne remet pas en cause vos gains" ]
t = ary[@command_window.index]
end
end
if t != @help_last_text
@help_last_text = t
@help_window.contents.clear
@help_window.contents.draw_text(0, 0, 512, 24, t, 1)
end
end
end

Voici les 2 images necessaires :

BackPoker.png
Mini-jeu de poker avec double chance Backpo10

Trump.png
Mini-jeu de poker avec double chance Trump10

EDIT : j'oubliais un detail : appeler le jeu .
Sur un evenement , faites "Placer une etiquette" (en bas à gauche du premier onglet) et mettez "poker" .
Vous verrez alors ecrit : "étiquette : poker" .
Et c'est tout .

EDIT2 :
Demos disponible sur ce topic :
https://www.rpgmakervx-fr.com/t10104-demo-technique#123619


Dernière édition par dricc le Lun 10 Jan 2011 - 11:10, édité 2 fois
Urah
Urah
Membre

Nombre de messages : 94
Age : 33
Distinction : aucune
Date d'inscription : 03/07/2008

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mar 4 Jan 2011 - 1:04
un gros merci pour ce partage !!!!
Yoshi-Dragon
Yoshi-Dragon
Membre

Nombre de messages : 752
Age : 23
Localisation : J'ai peur.
Distinction : aucune
Date d'inscription : 19/06/2009
http://smashbrosbrawl.e-monsite.com

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mar 4 Jan 2011 - 1:20
C'est simpa comme script
Mais perso, je voit pas pourquoi on irai joué au Poker dans un jeu O_^
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mar 4 Jan 2011 - 10:40
@Yoshi-Dragon a écrit:C'est simpa comme script
Mais perso, je voit pas pourquoi on irai joué au Poker dans un jeu O_^

Le mieux en fait , c'est de l'integrer façon pokemon :
Un premier guichet où tu achetes des jetons .
Un deuxieme où tu joues
Et un troisieme où tu echange tes jetons contre des objets introuvables ailleurs .

ça marche comme ça aussi dans dragon quest d'ailleurs .
Mais en aucun cas , ce mini-jeu ne doit etre inclu dans l'histoire , c'est juste un a-coté optionnel .
Urah
Urah
Membre

Nombre de messages : 94
Age : 33
Distinction : aucune
Date d'inscription : 03/07/2008

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mer 5 Jan 2011 - 2:42
Ou mettre un casino a la manière d'un tales of vespéria
limit' the fox
limit' the fox
Membre

Nombre de messages : 33
Distinction : aucune
Date d'inscription : 28/11/2010

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Dim 9 Jan 2011 - 9:03
quelqu'un peut m'aider ?


j'ai un bug ligne 154:uninitialized constant window_coin ::CAO_POKERVAR_COIN


la ligne en question est :
Code:
self.contents.draw_text(rect, $game_variables[CAO_POKERVAR_COIN], 2)

merci d'avance
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Lun 10 Jan 2011 - 11:12
C'est CAO_POKER::VAR_COIN , il manquait les ::

J'ai corrigé mon topic , merci .
J'ai ajouté un lien vers une démo tournante .
limit' the fox
limit' the fox
Membre

Nombre de messages : 33
Distinction : aucune
Date d'inscription : 28/11/2010

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Lun 10 Jan 2011 - 15:58
merci beaucoup !


maintenant ca marche !

Mon jeu peut continuer a tourner Wink

sur ce je te remercie .
Byakuya
Byakuya
Membre

Nombre de messages : 156
Age : 24
Localisation : Où tu ne cherchera pas
Distinction : aucune
Date d'inscription : 04/03/2009

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Lun 17 Jan 2011 - 19:16
Ah merci dricc j'avait essayer en évent mais c'est vraiment galère je ne l'ai pas encore testé mais j'imagine qu'il marche (pour la peine ton cara sera dans mon jeu^^)
EDIT: j'ai un probleme ligne 67 du 1er script (if $! != nil && /^.+?\d+)(?::in `(.*)')?/ =~ $@.first) si quelqun peut m'aider (je suis pas doué Embarassed )
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mar 18 Jan 2011 - 15:26
Le mieux est de partir de la démo !
ça évite les erreurs de copier-coller que j'ai pu faire ou que vous ayez pu faire .
Thotomato
Thotomato
Membre

Nombre de messages : 106
Age : 22
Distinction : aucune
Date d'inscription : 28/10/2010

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mar 18 Jan 2011 - 20:39
Le problème, c'est le smiley "Sad" qui s'est glissé dans le script. Ca devrai être écrit:
Code:
if $! != nil && /^.+?:(\d+)(?::in `(.*)')?/ =~ $@.first
Pharazon
Pharazon
Staffeux retraité

Nombre de messages : 1700
Age : 33
Localisation : Au Pays des Bisounours
Distinction : Super distinction!
[Coco' Mini-jeu de poker avec double chance 522164]
Date d'inscription : 14/04/2010

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mer 19 Jan 2011 - 8:34
bien sympa comme script, tout ça.
merci dricc Smile


EDIT :
Oui merci Cacao aussi, bien entendu Smile
mais c'est toi qui nous a trouvé ce script et nous le fait découvrir^^


Dernière édition par Pharazon le Mer 19 Jan 2011 - 10:37, édité 2 fois
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mer 19 Jan 2011 - 10:23
@Pharazon a écrit:bien sympa comme script, tout ça.
merci dricc Smile

Merci Cacao !
Moi , j'ai juste traduit . comme j'ai pu , d'ailleurs .
Frozen
Frozen
Membre

Nombre de messages : 584
Age : 24
Distinction : Prêt à tout pour aider le staff !
(distinction promise ^^)
Date d'inscription : 20/03/2010

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mer 19 Jan 2011 - 12:33
Je crois pas que ça ait été signalé, mais sur la screen (et dans le script), il y a écrit "Suite Souleur" au lieu de "Suite Couleur".
Yorubushi
Yorubushi
Membre

Nombre de messages : 32
Distinction : aucune
Date d'inscription : 31/01/2010

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Mer 19 Jan 2011 - 21:37
Cool merci je cherchais justement un script dans le genre pour faire un casino style dragon quest Very Happy
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Jeu 20 Jan 2011 - 11:02
Style dragon quest , oui . Dans dragon quest ,on joue des jetons casinos et pas de l'argent .
Il est prévu que dans la prochaine démo, il y ait 2 autres jeux de casino (fin de semaine , je pense) .

Les 2 autres sont issus du site de yanfly :
http://wiki.pockethouse.com/index.php?title=Category:Minigame_Scripts
Yasan
Yasan
Membre

Nombre de messages : 149
Age : 34
Distinction : aucune
Date d'inscription : 18/01/2011

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Jeu 20 Jan 2011 - 12:14
On peut savoir desquels il s'agit ou c'est encore top secret ? Very Happy Yaura la slot machine ? Hein hein HEIN ? *prend des pillules.*
dricc
dricc
Membre

Nombre de messages : 2757
Localisation : Lille
Distinction : Altruiste - Incarnation de la Patience [Mist']
Date d'inscription : 10/08/2009

Mini-jeu de poker avec double chance Empty Re: Mini-jeu de poker avec double chance

le Jeu 20 Jan 2011 - 14:12
J'ai mis la slot machine et le "bull's eye" .
Sympa tout les 2 . Pas forcement simples à utiliser , pusqu'il faut utiliser une variable intermédiaire .
Revenir en haut
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum