【教程】使用BitmapData来管理和进行纸牌游戏

C# BitmapData使用 阅读详情

导读:
  I have already published a tutorial about BitmapData in the post Shuffle an image with BitmapData, but this time I want to show you how to manage a deck of cards using BitmapData.
  Managing a deck of cards is very useful because there are tons of card games you can publish once you have a deck of cards in your library.


我在前面的教程中曾讲过如何使用bitmapdata来洗牌,这回我要向大家展示的是,如何使用这个类来管理一堆的卡片


管理一堆的卡片式很有用的事情,因为库里有了这个之后,你就可以制作任何的卡片游戏了




  The first thing you need is an image with all cards like this one:
  The image is scaled down for blogging reasons, but you can view/download it at its original size here.
  Now, with the same method seen in Shuffle an image with BitmapData, I'll cut off all cards starting from the original image.
  I am publishing some raw actionscript because this is just a prototype, but a full tutorial will come shortly.


首先你得有个象下面这样的卡片,当然因为是博客的原因这幅图片被缩放了,当然你可以追随链接下载其原始的尺寸。


现在就像在前面的一篇教程里见到的那样,你可以通过使用Bitmapdata类来,从这个图片中切出所有的卡片。我将发布关于这个问题的一些原始的as脚本,当然将会在后记的章节中给出全面的教程
  The prototype is about the simplest card game ever: you draw a card and have to say if the next card will be higher on lower than the card you have on the table.
  Being a prototype it's not complete yet, but I want to share this code to you.


这个简单的原型,大概是所有的纸牌中最简单的了:你抽出一张牌,然后猜测接下来发的这张牌是比桌上这张大呢?还是小呢?虽然并没有完成,但是我愿意和你分享这段代码
  ACTIONSCRIPT:
  importflash.display.BitmapData
  importflash.geom.Rectangle
  importflash.geom.Point
  importflash.filters.DropShadowFilter
  vardistance:Number= 4
  varangleInDegrees:Number= 45
  varcolor:Number= 0x000000;
  varalpha:Number= .5
  varblurX:Number= 4
  varblurY:Number= 4
  varstrength:Number= 1
  varquality:Number= 3
  varinner:Boolean= false
  varknockout:Boolean= false
  varhideObject:Boolean= false
  varmy_shadow_filter:DropShadowFilter = newDropShadowFilter(distance, angleInDegrees, color, alpha, blurX, blurY, strength, quality, inner, knockout, hideObject)
  big_picture = BitmapData.loadBitmap("cardz")
  _root.attachMovie("table","table",_root.getNextHighestDepth())
  _root.attachMovie("higher","higher",_root.getNextHighestDepth())
  _root.attachMovie("lower","lower",_root.getNextHighestDepth())
  _root.createEmptyMovieClip("big_pic_obj",_root.getNextHighestDepth())
  big_pic_obj.attachBitmap(big_picture,_root.getNextHighestDepth())
  big_pic_obj._visible= false
  pictures = newArray()
  sequence = newArray()
  Array.prototype.shuffle= function(){
  for(x=0x<52x++){
  varfrom = Math.floor(Math.random()*52)
  varto = this[x]
  this[x]= this[from]
  this[from]= to;
  }
  }
  for(x=0x<52x++){
  card = _root.createEmptyMovieClip("small_pic_obj_"+x, _root.getNextHighestDepth())
  sequence[x]= x;
  small_picture = newBitmapData(79, 123)
  card.attachBitmap(small_picture,_root.getNextHighestDepth())
  small_picture.copyPixels(big_picture,newRectangle(0+(x%13)*79, 0+Math.floor(x/13)*123, 79, 123),newPoint(0, 0))
  card._visible= false
  card.filters= newArray(my_shadow_filter)
  card.onEnterFrame= function(){
  switch(this.action){
  case"come":
  this._x+= 40
  if(this._x>210){
  this._x= 210
  this.action= "stay"
  }
  break
  case"move":
  this._x+= 20
  if(this._x>310){
  this._x= 310
  this.action= "dissolve"
  }
  break
  case"dissolve":
  this._alpha-= 4
  if(this._alpha<0){
  can_draw=true
  this.removeMovieClip()
  }
  break
  }
  }
  }
  sequence.shuffle()
  cards_drawn = 0
  can_draw = true
  draw_card()
  higher.onRelease= function(){
  if(can_draw){
  can_draw=false
  draw_card()
  }
  }
  lower.onRelease= function(){
  if(can_draw){
  can_draw=false
  draw_card()
  }
  }
  functiondraw_card(){
  _root["small_pic_obj_"+sequence[cards_drawn]]._x= 0
  _root["small_pic_obj_"+sequence[cards_drawn]]._y= 30
  _root["small_pic_obj_"+sequence[cards_drawn]]._visible= true
  _root["small_pic_obj_"+sequence[cards_drawn]].action= "come"
  _root["small_pic_obj_"+sequence[cards_drawn-1]].action= "move"
  cards_drawn++;
  }
  and the result is...
  I think simple and stupid games like this one can have a good replay value if I provide a high score table like in Christmas Couples, another simple game that entered in the "million games played" club.
  But I will talk about it in the next post about the experiment, meanwhile take the source code.


在接下来的博客中我们还会继续讨论这个问题,不要错过这段代码
  >>Flash Templatesprovided by Template Monster are pre-made web design products developed using Flash technology.
  They can be easily customized to meet the unique requirements of your project.



本文转自
http://www.emanueleferonato.com/2007/12/26/using-bitmapdata-to-manage-a-deck-of-cards/

C#实现一个控制台飞行棋小游戏(附源码) using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Text.RegularExpressions; using System.Threading.Tasks; namespace 飞行棋小游戏 { class Program { ... 阅读详情

相关推荐

21点扑克牌游戏(C#源码)

21点扑克牌游戏(C#源码)

BitmapData类

https://blog.youkuaiyun.com/zhangj1012003_2007/article/details/6283032

gengrenyuan的博客 987

高校技术转移办公室人员如何提升技术成果的市场化对接效率?.docx

高校技术转移办公室人员如何提升技术成果的市场化对接效率?

C# 坦克游戏大战中学习相关类(Bitmap)

C# 坦克游戏大战,包装类Blast代码如下: using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Drawing; using TankCar.Properties; namespace TankCar { class Blast:Coordination { pr

钢铁男儿 368

国央企创新负责人如何通过平台实现科技成果的定向匹配与快速转化?.docx

科易网基于AI模型+行业大数据,在技术转移、成果转化、技术经纪、知识产权、产业创新、科技招商等垂直领域的多样化应用场景,推出科技创新领域的AI+工具与数智化解决方案,推动科技创新与产业创新智能化发展。

端口测试软件Windows

端口测试软件Windows

【教程】使用BitmapData来管理和进行纸牌游戏【2】

导读: 还记得前几天说过的用Bitmap来管理纸牌游戏的帖子嘛,作者又发出了他最近的代码,介绍如下  At the moment the prototype has all messages and a game over screen with the score recap.   Now I want to include Kongregates highscores APIan

The Way To Great 875

Java编程MVC架构下的Web开发示例

内容概要:本文通过一个“用户管理”功能的开发实例,详细展示了MVC(Model-View-Controller)架构在Web开发中的具体应用。文章将系统划分为三层:Model负责数据与业务逻辑,View专注于页面展示,Controller处理请求并协调前后端交互。通过手写Servlet + JSP的传统方式实现MVC,帮助读者深入理解分层原理和请求流转过程,包括数据传递、视图渲染与重定向机制。同时简要对比了Spring MVC的实现差异,突出传统实现对架构本质的清晰呈现。示例采用内存模拟数据库操作,简化环境依赖,便于学习。 适合人群:具备Java基础和基本Web开发知识,工作1-3年的后端研发人员或学习中的计算机专业学生。 使用场景及目标:①掌握MVC架构的核心思想与分层职责划分;②理解Servlet如何作为控制器处理HTTP请求与响应流程;③学习JSP与JSTL在视图层的数据渲染与安全防护(如XSS防御);④为后续学习Spring MVC等现代框架打下扎实基础。 阅读建议:建议动手实践文中代码,结合调试观察请求流程与数据流向,重点关注各层之间的协作关系及PRG模式的应用,以加深对Web应用整体结构的理解。

c#操作BitmapData

旧问题,以下记录。 首先Image与bytes的转换 private Byte[] Image2Bytes(string imagefilename) { System.IO.FileStream stream = new System.IO.FileStream(imagefilename, System.IO.FileMode.Op...

tulandsoft的专栏 4368

文旅酒店业AI知识库平台规划方案(生态合作版).pptx

文旅酒店业AI知识库平台规划方案(生态合作版).pptx

两相交错并联Boost电路仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了两相交错并联Boost电路的Simulink仿真模型,属于电力电子变换器领域的核心技术研究。该模型基于Simulink平台构建,重点在于通过多相交错并联结构提升Boost电路的输出稳定性与转换效率,有效降低输入电流纹波,适用于中高功率电力变换场合。文档系统阐述了电路的工作原理、闭环控制策略设计、软启动机制实现以及关键参数的优化方法,充分展现了多相并联技术在改善动态响应、提高功率密度方面的优势。同时,提供了完整的仿真建模流程和技术路线,涵盖主电路搭建、控制器设计、系统调试与性能分析等环节,并配套提供仿真文件、设计报告及参考文献等丰富资料,便于学习者深入理解与实践复现。; 适合人群:具备电力电子技术基础知识、熟悉Simulink仿真环境,正在从事新能源发电、电动汽车、工业电源系统等相关领域研究的硕士博士研究生、科研人员及电气工程方向的工程技术人员。; 使用场景及目标:①用于深入理解多相交错并联Boost电路的拓扑结构与工作机理;②支撑科研项目中的高效DC-DC变换器性能验证与优化设计;③为实际电源产品开发提供理论依据和仿真原型;④作为高校课程设计或实验教学的参考案例,提升学生的工程仿真与系统分析能力。; 阅读建议:建议结合文档中提及的其他相关变换器模型(如LLC谐振变换器、PFC电路、Buck变换器等)进行横向对比学习,深入掌握不同拓扑的控制策略差异与适用场景,并充分利用所提供的网盘资源下载完整仿真模型,动手调试参数、观察波形,从而深化对多相并联控制、电流均流、闭环稳定性等关键技术的理解,全面提升电力电子系统的仿真与设计能力。

无人机视角建筑物楼房外立面缺陷剥落裂缝检测数据集VOC+YOLO格式1263张2类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

夜晚监控场景下老鼠检测数据集VOC+YOLO格式3961张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

全桥LLC谐振(变频+移相混合控制)变换器闭环仿真模型(Simulink仿真实现)

内容概要:本文详细介绍了基于Simulink平台构建的全桥LLC谐振变换器闭环仿真模型,采用变频与移相混合控制策略,以实现对变换器高效、稳定的动态调节。文档系统阐述了变换器的主电路建模方法、关键参数设计流程及闭环控制系统架构,涵盖了软启动过程、恒压恒流双竞争控制等多种典型工况的仿真验证,充分体现了其在高频高效电源系统中的应用潜力。资源包还包含完整的设计报告、仿真文件与参考文献,有助于用户深入理解并复现实验结果,适用于电力电子系统的研究与工程开发。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员以及从事开关电源、新能源变换器设计的工程技术人员,要求具备扎实的电路理论基础和一定的Simulink仿真能力。; 使用场景及目标:①深入掌握全桥LLC谐振变换器的工作机理与变频+移相结合控制策略的设计原理;②学习如何在Simulink中搭建高精度闭环仿真模型,并开展动态响应、效率优化与稳定性分析;③为科研课题、学位论文或工业级电源产品的研发提供可复用的技术方案与仿真模板支持; 阅读建议:建议结合所提供的设计报告与仿真模型同步操作,重点剖析控制环路(如PI调节器)的设计思路与参数整定过程,通过调整输入电压、负载条件等方式测试系统的鲁棒性与调节性能,从而全面深化对LLC谐振变换器闭环控制机制的理解。

电动车检测数据集VOC+YOLO格式3015张1类别.md

【重要提示】本页面仅为资源介绍,不含外部下载地址 亲爱的 优快云 用户: 感谢你浏览本资源页面,在这里提前向大家说明相关情况,避免后续产生误解。本资源我设置的初衷是 0 积分免费分享文档介绍,希望可以无偿给到有需要的朋友。但 优快云 平台存在自动调控机制,系统会根据资源下载热度、文件体积、平台规则等因素,自动修改资源所需下载积分,页面显示为 1 积分、2 积分或更高积分都属于平台自动调整结果,并非我手动修改设置,我没有权限自主锁定积分数值。 如果你打开页面后,发现下载所需积分不为 0,请务必谨慎考虑是否下载。一旦你支付积分完成下载,后续遇到资源内容和描述不符、文件损坏等问题,我无法承担对应的积分损失,也没有渠道为你办理积分退还。在此强烈建议,只有页面明确显示 0 积分的时候,再进行下载操作。 同时特别说明:这份资源介绍文案里,没有附带任何外部下载地址。资源本身是通过 优快云 官方上传通道上传的附件,正常情况下直接点击页面自带的下载按钮即可获取文件。页面找不到外部下载链接属于正常情况,并非资源缺失。 如果因为平台积分显示异常,导致你被扣取积分,积分退款、积分异常相关问题,请直接联系 优快云 官方客服咨询处理。平台规则由官方制定,我无法干预积分变动,望各位理解。

方差分解分析变量筛选与显著性计算

冗余分析(redundancy analysis,RDA)是一种回归分析结合主成分分析的排序方法,也是多响应变量(multiresponse)回归分析的拓展。在进行VPA时,首先就要对这些环境因子进行一个分类,然后在约束其它类环境因子的情况下,对某一类环境因子进行排序分析,这种分析也成为偏分析,即partialRDA。在地球环境科学的实际应用中,可以基于VPA结果得出不同类型的环境因素(如何气候、土壤性质以及植物)对生物群落组成(如植被丰度,微生物群落)的解释程度。对于由或创建的排序对象,函数。

wlh2067的博客 2521
上一篇: 【来自DCAT】Adboe on all devices
下一篇: 【教程】定制下拉列表选中时的样式
zinking3
博客等级 码龄20年 262粉丝 215原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值