设为首页收藏本站|繁體中文

Project1

 找回密码
 注册会员
搜索
查看: 1296|回复: 2
打印 上一主题 下一主题

[已经过期] 关于算24点算法游戏的问题!!

[复制链接]

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2010-8-19
帖子
33
跳转到指定楼层
1
发表于 2012-12-1 23:46:46 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式

加入我们,或者,欢迎回来。

您需要 登录 才可以下载或查看,没有帐号?注册会员

x
前几天想写一个关于24点算法的小游戏,今天调试了很多次,也改了很多地方,但还是有问题,花了很长时间还是没找到怎么错了,实在是无能了,所以就只有找各位大神求助啦。因为没有加上括号所以运算都是从左到右运算,实例中另四个数分别为8,7,3,3, @number_=[8,7,3,3] 运算错误见图片
不管怎么样,先谢谢啦。先贴出脚本。
  1. class Moni
  2.   def main
  3.     $data_actors        = load_data("Data/Actors.rxdata")
  4.     $data_classes       = load_data("Data/Classes.rxdata")
  5.     $data_skills        = load_data("Data/Skills.rxdata")
  6.     $data_items         = load_data("Data/Items.rxdata")
  7.     $data_weapons       = load_data("Data/Weapons.rxdata")
  8.     $data_armors        = load_data("Data/Armors.rxdata")
  9.     $data_enemies       = load_data("Data/Enemies.rxdata")
  10.     $data_troops        = load_data("Data/Troops.rxdata")
  11.     $data_states        = load_data("Data/States.rxdata")
  12.     $data_animations    = load_data("Data/Animations.rxdata")
  13.     $data_tilesets      = load_data("Data/Tilesets.rxdata")
  14.     $data_common_events = load_data("Data/CommonEvents.rxdata")
  15.     $data_system        = load_data("Data/System.rxdata")
  16.     $game_temp          = Game_Temp.new
  17.     $game_system        = Game_System.new
  18.     $game_switches      = Game_Switches.new
  19.     $game_variables     = Game_Variables.new
  20.     $game_self_switches = Game_SelfSwitches.new
  21.     $game_screen        = Game_Screen.new
  22.     $game_actors        = Game_Actors.new
  23.     $game_party         = Game_Party.new
  24.     $game_troop         = Game_Troop.new
  25.     $game_map           = Game_Map.new
  26.     $game_player        = Game_Player.new
  27.   @number_s=["+","-","*","/"]##加减乘除
  28.   @number_=[]#####四个数字存放
  29.   @show_=[]###显示数字
  30.   @break_=0###全部中断循环(满足一个相加减乘除等于24就跳出循环等待按键)
  31.   for i in 0..3###
  32.   @show_[i]=Sprite.new
  33.   @show_[i].bitmap= Bitmap.new(40,40)
  34.   @show_[i].bitmap.draw_text(0,0,40,40,(@number_[i]=(rand(9)).to_i).to_s)
  35.   @show_[i].x=100+20*i
  36.   @show_[i].y=200
  37.   end
  38.   @number_=[8,7,3,3]
  39.   Graphics.transition
  40.   loop do
  41.     Graphics.update
  42.     Input.update
  43.     update
  44.     if $scene!=self
  45.       break
  46.     end
  47.   end
  48.   Graphics.freeze
  49.   for i in 0..3
  50.     @show_[i].dispose
  51.     @shoe_[i].bitmap.dispose
  52.   end
  53.   end
  54.   def update
  55.     if Input.trigger?(Input::C)
  56.       @break_=0
  57.     for i in 0..3
  58.       @show_[i].bitmap.clear
  59.      # @show_[i].bitmap.draw_text(0,0,40,40,(@number_[i]=rand(9)).to_s)
  60.       @show_[i].bitmap.draw_text(0,0,40,40,(@number_[i].to_s))
  61.      end
  62.     @i=0##第一个数循环下标
  63.     @j=0##第二个数循环下标
  64.     @n=0##第三个数循环下标
  65.     @m=0##第四个数循环下标
  66.     @i_=0##第一个数
  67.     @j_=0##第二个数
  68.     @n_=0##第三个数
  69.     @m_=0##第四个数
  70.     @re=0#计算总数
  71.     @re__=0####输出第三个数前@re结果保存(复位)
  72.     @re___=0##输出第四个数前@re结果保存
  73.     @re_=0##输出第二个数前@re结果保存
  74.     @ij_=0##数1和数2的运算
  75.     @jm_=0##数2和数3的运算
  76.     @mn_=0##数3和数4的运算
  77.         for @i in 0..3#第一个数的输入
  78.             if @break_==1##当结果为24时中断
  79.                 break
  80.             end
  81.             @i_=@number_[@i]
  82.             @re_=@i_
  83.             @re=@re_#记录数据(第二个数以前的算数结果)
  84.          for @j in 0..3#第二个数的输入
  85.              if @break_==1
  86.                       break
  87.                       end
  88.              @j_=@number_[@j]
  89.         if @j!=@i       #第一个数不等于第二个数
  90.            for @su_ in 0..3##################################第一次运算
  91.                if @break_==1
  92.                       break
  93.                 end
  94.               @j__=1###记录此时除数为0同@n__、@m__
  95.               @ij_=@number_s[@su_]##保留算式(+、-、*、/)   
  96.              case @su_
  97.                   when 0  ##为加法
  98.                        @re=@re+@j_
  99.                   when 1  ##为减法
  100.                        @re=@re-@j_  
  101.                   when 2  ##为乘法
  102.                        @re=@re*@j_
  103.                   when 3  ##为除法
  104.                  if @j_!=0##除数不为零
  105.                      @re=@re/@j_##@re为计算结果
  106.                    else
  107.                       @re=0
  108.                      @j__=0
  109.                   end
  110.               end
  111.               @re__=@re#########################记录数据(第三个数以前的算数结果)
  112.             for @m in 0..3##第三个数输入
  113.                if @break_==1
  114.                       break
  115.                end
  116.              @m_=@number_[@m]
  117.               if @m!=@j&&@m!=@i
  118.                    for @su__ in 0..3#########################第二次运算
  119.                        if @break_==1
  120.                            break
  121.                         end
  122.                         @m__=1
  123.                        @jm_=@number_s[@su__]
  124.                       case @su__
  125.                            when 0
  126.                               @re=@m_+@re
  127.                            when 1
  128.                               @re=@re-@m_
  129.                            when 2
  130.                               @re=@m_*@re
  131.                            when 3
  132.                          if @m_!=0
  133.                             @re=@re/@m_
  134.                           else
  135.                             @re=0
  136.                             @m__=0
  137.                          end
  138.                        end
  139.                        @re___=@re##################记录数据(第四个数以前的算数结果  
  140.                     for @n in 0..3###第四个数的输入
  141.                          if @break_==1
  142.                              break
  143.                           end
  144.                           @n_=@number_[@n]
  145.                             if @n!=@m&&@n!=@i&&@n!=@j
  146.                                  for @su___ in 0..3#################第三次运算
  147.                                      @n__=1
  148.                                      @mn_=@number_s[@su___]
  149.                                     case @su___
  150.                                        when 0
  151.                                            @re=@re+@n_
  152.                                        when 1
  153.                                            @re=@re-@n_
  154.                                        when 2
  155.                                            @re=@re*@n_
  156.                                        when 3
  157.                                            if @n_!=0
  158.                                               @re=@re/@n_
  159.                                             else
  160.                                                @re=0
  161.                                                @n__=0
  162.                                            end
  163.                                        end
  164.                                   if @j__==0||@n__==0||@m__==0##(如果有0为被除数的话就直接另结果为0)
  165.                                          @re=0
  166.                                   end
  167.                                if @re==24###结果为24时输出计算过程
  168.                                    if  @result_!=nil
  169.                                        @result_.dispose
  170.                                        @result_.bitmap.clear
  171.                                        @re
  172.                                      end
  173.                                    @result_ = Sprite.new
  174.                                    @result_.bitmap = Bitmap.new(640,480)
  175.                                    @result_.bitmap.draw_text(100,100,640,480,@i_.to_s+@ij_.to_s+@j_.to_s+@jm_.to_s+@m_.to_s+@mn_.to_s+@n_.to_s)
  176.                                    @result_.x=100
  177.                                    @result_.y=100
  178.                                    @break_=1
  179.                                     break
  180.                                  else
  181.                                    if @su___!=3||@n!=3
  182.                                       @re=@re___
  183.                                    elsif (@su___==3&&@n==3&&@m!=3)||(@su___==3&&@n==3&&@su__!=3)
  184.                                       @re=@re__
  185.                                    elsif (@su__==3&&@m==3&&@j!=3)||(@su__==3&&@m==3&&@su_!=3)
  186.                                     @re=@re_
  187.                                    end
  188.                                end
  189.                            end
  190.                        end
  191.                    end
  192.              end
  193. end
  194. end
  195. end
  196. end
  197. end
  198. end
  199. end
  200. end
  201. end
复制代码
24.rar (228.73 KB, 下载次数: 6) 写的有点乱,如果有什么我写的不清楚的地方,就提出来,谢谢啦!

Lv1.梦旅人

梦石
0
星屑
50
在线时间
1281 小时
注册时间
2006-8-27
帖子
590
2
发表于 2012-12-2 00:23:41 | 只看该作者
本帖最后由 wbsy8241 于 2012-12-2 00:51 编辑

没这么简单的吧
看看这个
http://rpg.blue/forum.php?mod=viewthread&tid=220046
他写了多长

你新学脚本吧? 上面1长串没用的东西也放上去
还有所有符号2边加空格
回复 支持 反对

使用道具 举报

Lv1.梦旅人

梦石
0
星屑
50
在线时间
129 小时
注册时间
2010-8-19
帖子
33
3
 楼主| 发表于 2012-12-2 10:59:38 | 只看该作者
wbsy8241 发表于 2012-12-2 00:23
没这么简单的吧
看看这个
http://rpg.blue/forum.php?mod=viewthread&tid=220046

学了有一阵子了,还有上面那一窜是为了跳过标题好不。

点评

你把脚本放最上面 直接执行这个类 完全都不需要进标题  发表于 2012-12-4 00:49
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

拿上你的纸笔,建造一个属于你的梦想世界,加入吧。
 注册会员
找回密码

站长信箱:[email protected]|手机版|小黑屋|无图版|Project1游戏制作

GMT+8, 2025-1-10 02:04

Powered by Discuz! X3.1

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表