用quick制作仿PkrCruncher

用quick制作仿PkrCruncher,第1张

概述将自己写的一段代码贴上来,抽取的是业务逻辑层,结构比较完整,我将太具体的东西都删除掉了。里面有tableview,帧动画,替换精灵图片,获取系统时间。 local CalWinRateScene = class("CalWinRateScene", function()                            return display.newScene("CalWinRate

将自己写的一段代码贴上来,抽取的是业务逻辑层,结构比较完整,我将太具体的东西都删除掉了。里面有tablevIEw,帧动画,替换精灵图片,获取系统时间。

local CalWinRateScene = class("CalWinRateScene",function()              return display.newScene("CalWinRateScene")            end)function CalWinRateScene:ctor()  self.layer = display.newLayer()  self:addChild(self.layer)  -- 生成数据  self:createData()  -- 添加内容和标题  self:addContent()  self:addtopTitle()  self:addtable()  -- 默认选中状态为A  self.layer:getChildByTag(44):getChildByTag(1111):getChildByTag(22):setEnabled(false)  -- 默认焦点在6号位置  self.layer:getChildByTag(1000):cellAtIndex(0):getChildByTag(1):setVisible(true)endfunction CalWinRateScene:addtopTitle()  require("app.Utils.GeneralSceneFactory").new({parentNode = self.layer,title="概率计算器",backFunction = function()      end})endfunction CalWinRateScene:runFanPaiAnimation(node,calBackFunc,others)  CCDirector:sharedDirector():getActionManager():removeAllActionsFromTarget(node)  -- 进入的时候加载帧动画  local sharedSpriteFrameCache = CCSpriteFrameCache:sharedSpriteFrameCache()  local animation = display.newAnimation({  sharedSpriteFrameCache:spriteFrameByname(others.beginCard),sharedSpriteFrameCache:spriteFrameByname("animation1.png"),sharedSpriteFrameCache:spriteFrameByname("animation2.png"),sharedSpriteFrameCache:spriteFrameByname("animation3.png"),sharedSpriteFrameCache:spriteFrameByname("animation4.png"),sharedSpriteFrameCache:spriteFrameByname("animation5.png"),sharedSpriteFrameCache:spriteFrameByname(others.endCard)},0.04)  local animate = CCAnimate:create(animation)  local func = CCCallFuncN:create(calBackFunc)  local array = CCArray:create()  array:addobject(func)  array:addobject(animate)  node:runAction(CCSequence:create(array))endfunction CalWinRateScene:runGaiPaiAnimation(node,callBackFunc,others)end-- 设置选中之后图标和提示文字的颜色function CalWinRateScene:setcolorSelect(index)  local sharedSpriteFrameCache = CCSpriteFrameCache:sharedSpriteFrameCache()  local frame = sharedSpriteFrameCache:spriteFrameByname("3hua0" .. 1+index .. ".png")  self.layer:getChildByTag(44):getChildByTag(101+index):setcolor(ccc3(163,163,163))    self.layer:getChildByTag(44):getChildByTag(105+index):setdisplayFrame(frame)end-- 还原选中之后的图标和提示文字的颜色function CalWinRateScene:setcolorUnselect(index)end-- 判断是否应该,还原相应的花色牌function CalWinRateScene:needRebackcolor(info,term)  local preString = string.sub(info,1,1)  local intPrevString = self:stringToInt(info)  local nextString = string.sub(term,1)  if preString == nextString then    local rebackIndex = math.ceil(intPrevString/13)    self.layer:getChildByTag(44):getChildByTag(1111):getChildByTag(rebackIndex+27):setEnabled(true)    self:setcolorUnselect(rebackIndex-1)  endend-- 将选中点得选中状态还原function CalWinRateScene:resetSelectedState(index)  if index < 6 then    -- 公共牌    self.layer:getChildByTag(44):getChildByTag(1111):getChildByTag(index+32):setEnabled(true)  else    -- 选手牌    local temptable = self:getCellindexAndSpriteIndex(index)    local cellindex = temptable.cellindex+1    local spriteIndex = temptable.spriteIndex    local cell = self.layer:getChildByTag(1000):cellAtIndex(cellindex-1)    if cell then      cell:getChildByTag(spriteIndex):setVisible(false)    end     endend-- 添加选中点得状态function CalWinRateScene:addSelectedState(index)end-- 当焦点在tableVIEw中换行时,要做offset的偏移function CalWinRateScene:maketableVIEwMove()end-- 获得tablevIEw的列和精灵的相应索引function CalWinRateScene:getCellindexAndSpriteIndex(index)  local cellindex = math.ceil((index-5)/4)  local spriteIndex = cellindex*4 - (index-5)  if spriteIndex == 0 then    spriteIndex = 4  else    spriteIndex = 4-spriteIndex  end  local temptable = {}  temptable.cellindex = cellindex-1  temptable.spriteIndex = spriteIndex  return temptableendfunction CalWinRateScene:addContent()  local function selectPocker(text,tag)   end  local function selectPublicCard(tag)  end  local function selectDetailCard(tag)   end  local function resetAll()  end  -- 撤销 *** 作  local function cancelSelect()  end  local function addMenuItemClick(tag)    if tag == 11 then      resetAll()    elseif tag == 12 then      -- 删除按钮    elseif tag == 13 then      -- 增加按钮          elseif tag == 14 then      local info = {}      info.HoleCard1 = self.playerCards[1][1]      info.HoleCard2 = self.playerCards[1][2]      info.PublicCards = self.publicCards      info.publicCardsCount = 5      info.PlayerCards = {}      for i=2,self.playerNum do        for j=1,2 do          info.PlayerCards[#info.PlayerCards+1] = self.playerCards[i][j]        end      end      info.PlayerCount = self.playerNum -1      local limit = os.time()      local date=os.date("%Y-%m-%d %H:%M:%s",limit)      print("the begin date is " .. date)      local res = BookUtils:calWinRate(Json.encode(info))      print("the res is " .. res)      res = string.sub(res,#res-1)      local resarray = string.split(res,";")      local tableVIEw = self.layer:getChildByTag(1000)      table.walk(resarray,function(val,key)            local temp = string.sub(val,6)            local numTemp = tonumber(temp)            local finalTemp = numTemP*100 .. "%"            self.winRate[tonumber(key)] = finalTemp                      end)      local height = tableVIEw:getContentOffset().y      tableVIEw:reloadData()      tableVIEw:setContentOffset(CCPoint(0,height),false)           local limit = os.time()      local date=os.date("%Y-%m-%d %H:%M:%s",limit)      print("the end date is " .. date)    elseif tag == 15 then      -- 选牌:8      selectPocker("8",15)    elseif tag == 16 then      -- 选牌:7      selectPocker("7",16)    elseif tag == 17 then      -- 选牌:6      selectPocker("6",17)    elseif tag == 18 then      -- 选牌:5      selectPocker("5",18)    elseif tag == 19 then      -- 选牌:4      selectPocker("4",19)    elseif tag == 20 then      -- 选牌:3      selectPocker("3",20)    elseif tag == 21 then      -- 选牌:2      selectPocker("2",21)    elseif tag == 22 then      -- 选牌:A      selectPocker("A",22)    elseif tag == 23 then      -- 选牌:K      selectPocker("K",23)    elseif tag == 24 then      -- 选牌:Q      selectPocker("Q",24)    elseif tag == 25 then      -- 选牌:J      selectPocker("J",25)    elseif tag == 26 then      -- 选牌:10      selectPocker("10",26)    elseif tag == 27 then      -- 选牌:9      selectPocker("9",27)    elseif tag == 28 then      -- 区域:黑桃      selectDetailCard(28)    elseif tag == 29 then      -- 区域:红心      selectDetailCard(29)    elseif tag == 30 then      -- 区域:草花      selectDetailCard(30)    elseif tag == 31 then      -- 区域:方片      selectDetailCard(31)    elseif tag == 32 then      -- 区域:撤销      cancelSelect()    elseif tag == 33 then      -- 翻牌1      selectPublicCard(33)    elseif tag == 34 then      -- 翻牌2      selectPublicCard(34)    elseif tag == 35 then      -- 翻牌3      selectPublicCard(35)    elseif tag == 36 then      -- 转牌      selectPublicCard(36)    elseif tag == 37 then      -- 河牌      selectPublicCard(37)    end  end  local filename = "app.data.WinRateData"  require("app.Utils.NodeInflater"):easyRootInflater():inflate(filename,self.layer)  local menuItems = self.layer:getChildByTag(44):getChildByTag(1111):getChildren()  for i=1,menuItems:count() do    menuItems:objectAtIndex(i-1):registerScriptTapHandler(addMenuItemClick)  endendfunction CalWinRateScene:createData()  -- 公共牌  self.publicCards = {"-1","-1","-1"}  -- 对手牌  self.playerCards = {}  for i=1,10 do    self.playerCards[i] = {"-1","-1"}  end  -- 玩家的个数  self.playerNum = 2  -- 选择的牌 2-A  self.selectPoker = "A"  -- 选择的花色 h,d,s,c  self.selectcolor = "-1"  -- 选牌,焦点所在的位置 公共牌1-5,牌手的牌6-10, 10-14  self.focusPoint = 6  -- 数据  self.winRate = {}  for i=1,10 do    self.winRate[i] = ""  end  -- cell的高度  self.cellHeight = 218end-- 将牌型的string转化成intfunction CalWinRateScene:stringToInt(text)endfunction CalWinRateScene:addtable()  local winSize = CCDirector:sharedDirector():getWinSize()  local tableVIEw = CCtableVIEw:create(CCSizeMake(display.wIDth,display.height-696-STATUSbarH))  tableVIEw:setDirection(kCCScrollVIEwDirectionVertical)  tableVIEw:setVerticalFillOrder(kCCtableVIEwFilltopDown)  tableVIEw:setposition(CCPointMake(0,360))  tableVIEw:setBounceable(true)  tableVIEw:setTag(1000)  self.layer:addChild(tableVIEw)  tableVIEw:setZOrder(1)  tableVIEw:registerScriptHandler(handler(self,self.scrollVIEwDIDScroll),CCtableVIEw.ktableVIEwScroll)  tableVIEw:registerScriptHandler(handler(self,self.scrollVIEwDIDZoom),CCtableVIEw.ktableVIEwZoom)  tableVIEw:registerScriptHandler(handler(self,self.tableCelltouched),CCtableVIEw.ktableCelltouched)  tableVIEw:registerScriptHandler(handler(self,self.cellSizefortable),CCtableVIEw.ktableCellSizeforIndex)  tableVIEw:registerScriptHandler(handler(self,self.tableCellAtIndex),CCtableVIEw.ktableCellSizeAtIndex)  tableVIEw:registerScriptHandler(handler(self,self.numberOfCellsIntableVIEw),CCtableVIEw.kNumberOfCellsIntableVIEw)  tableVIEw:registerScriptHandler(handler(self,self.tableCellHighlight),CCtableVIEw.ktableCellHighlight)  tableVIEw:registerScriptHandler(handler(self,self.tableCellUnhighlight),CCtableVIEw.ktableCellUnhighlight)   tableVIEw:reloadData()end-- tablevIEw的代理function CalWinRateScene:scrollVIEwDIDScroll(vIEw)endfunction CalWinRateScene:scrollVIEwDIDZoom(vIEw)endfunction CalWinRateScene:tableCelltouched(table,cell)  local IDx = cell:getIDx()  local num = IDx + 1endfunction CalWinRateScene:cellSizefortable(table,IDx)  return self.cellHeight,640end-- 将公共牌和玩家的焦点清空function CalWinRateScene:clearFocus()endfunction CalWinRateScene:tableCellAtIndex(table,IDx)  local num = IDx + 1  local cell = table:dequeueCell()  if nil == cell then    cell = CCtableVIEwCell:new()  else    cell:removeAllChildrenWithCleanup(true)   end  -- index的取值1:左1 2:左2 3:右1 4:右2  local function createCard(posx,posy,index)  end  local function createBg(posx,poxy)  end  local function creatWhiteBg(posx,posy)  end  local function creatLable(posx,index)  end  local function addRight()    createBg(330,0)    createCard(350,198,3)    createCard(470,4)    creatWhiteBg(380,9)    creatLable(460,29,2)  end  local function addleft()    createBg(50,0)    createCard(70,1)    createCard(190,2)    creatWhiteBg(100,9)    creatLable(180,1)  end  if num < math.ceil(self.playerNum*1.0/2) then    addleft()    addRight()  elseif num == math.ceil(self.playerNum*1.0/2) then    if self.playerNum/2 == math.ceil(self.playerNum*1.0/2) then      addleft()      addRight()    else      addleft()    end  end  return cellendfunction CalWinRateScene:numberOfCellsIntableVIEw(table)  return math.ceil(self.playerNum/2)endfunction CalWinRateScene:tableCellHighlight(table,cell)endfunction CalWinRateScene:tableCellUnhighlight(table,cell)endreturn CalWinRateScene

最终的效果图如下:


csdn不能传视频,所以只传一张静态图。具体效果可以下载app:德州培训大师体验。(ps:美术大哥发了一个压缩图片的网址:点击打开链接,mark 一下)

总结

以上是内存溢出为你收集整理的用quick制作仿PkrCruncher全部内容,希望文章能够帮你解决用quick制作仿PkrCruncher所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1029984.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存