扑克牌程序问题

问题描述

PlayingCardcard=this.cardPack[(int)suit,(int)value];this.cardPack[(int)suit,(int)value]=null;returncard;以上程序为方法中一部分,目的是返回一张扑克牌,同时设置null,card获得拉this.cardPack[(int)suit,(int)value]的地址,this.cardPack[(int)suit,(int)value]设置为null,那么返回的card也应该是null,返回card达不到效果呀。望高手解答,困惑中。

解决方案

解决方案二:
是教材入门到精通中的一个例子。
解决方案三:
你这什么逻辑,谁告诉你引用类型设置为null后,原来的也变成null的?设置null就是重新设置其引用地址vara=newobject();varb=a;a=null;//b!=null

解决方案四:
namespaceCards{usingSystem;usingSystem.Collections;classPack{publicconstintNumSuits=4;//扑克牌中的四种花色publicconstintCardsPerSuit=13;//扑克牌的13种面值privatePlayingCard[,]cardPack;//存储扑克牌对象的数组privateRandomrandomCardSelector=newRandom();//用来生成随机数,目的是随机发牌//构造方法用来初始化扑克牌数组。publicPack(){//生成扑克牌数组的实例cardPack=newPlayingCard[NumSuits,CardsPerSuit];//将扑克牌数组中的每个元素都实例化成一个扑克牌的对象for(Suitsuit=Suit.Clubs;suit<=Suit.Spades;suit++){for(Valuevalue=Value.Two;value<=Value.Ace;value++){this.cardPack[(int)suit,(int)value]=newPlayingCard(suit,value);}}}//发牌程序publicPlayingCardDealCardFromPack(){//随机生成一种花色Suitsuit=(Suit)randomCardSelector.Next(NumSuits);//判断该随机花色是否全部发完牌。while(this.IsSuitEmpty(suit)){//重新随机生成一个花色suit=(Suit)randomCardSelector.Next(NumSuits);}//随机产生一个牌面值Valuevalue=(Value)randomCardSelector.Next(CardsPerSuit);//随机产生一张扑克牌,这张牌在数组里面的值不为空的while(this.IsCardAlreadyDealt(suit,value)){value=(Value)randomCardSelector.Next(CardsPerSuit);}PlayingCardcard=this.cardPack[(int)suit,(int)value];this.cardPack[(int)suit,(int)value]=null;returncard;}privateboolIsSuitEmpty(Suitsuit){boolresult=true;//判断具有suit花色的每张牌(2~A),如果有一张牌不是null的result值为false,否则为truefor(Valuevalue=Value.Two;value<=Value.Ace;value++){if(!IsCardAlreadyDealt(suit,value)){result=false;break;}}returnresult;}//如果这个数组中的元素值为null则代表该牌已经发出privateboolIsCardAlreadyDealt(Suitsuit,Valuevalue){return(this.cardPack[(int)suit,(int)value]==null);}}}
解决方案五:
引用2楼娃都会打酱油了的回复:

你这什么逻辑,谁告诉你引用类型设置为null后,原来的也变成null的?设置null就是重新设置其引用地址vara=newobject();varb=a;a=null;//b!=null

b!=null,晕,应该等于呀,a,b是同样的引用呀,大神我想不通呀。
解决方案六:
是不是null本身就是引用呀,记得教材里说过这么一句话。
解决方案七:
你把object想象成一桩房子,a和b是房子的门牌号,现在我把a拿走了,关b什么事
解决方案八:
大神,在没有赋值null之前门牌号是不是一样呀
解决方案九:
两个引用指向同一个对象的地址,你把其中一个引用指向的地址变了,会影响另一个引用吗?
解决方案十:
引用8楼johnliuyuan的回复:

两个引用指向同一个对象的地址,你把其中一个引用指向的地址变了,会影响另一个引用吗?

是会的

时间: 2024-09-20 16:06:25

扑克牌程序问题的相关文章

代码没提示有错误,点调试什么也没有,一个比较扑克牌大小的程序

问题描述 代码没提示有错误,点调试什么也没有,一个比较扑克牌大小的程序 public class Poker { public string Suit { get; set; } public string Value { get; set; } public Poker() { int m; Random r1 = new Random(); m = r1.Next(1, 5); int n; Random r2 = new Random(); n = r2.Next(1, 14); if (

用Visual Basic.NET编写扑克牌游戏

visual 扑克游戏林林总总,同一种游戏各地玩法亦不尽相同.编程爱好者多喜欢编写一些本地玩法的扑克游戏.那么,编写自己的扑克游戏该从何处入手呢? 扑克游戏编程关键有两点:一是扑克牌面的绘制:二是扑克游戏规则的算法实现.初学扑克游戏编程的爱好者可从一些简单的游戏.借用一些现有资源开始.本文拟借用Windows自带的Cards.dll和简单的21点游戏为例,介绍扑克游戏编程的初步方法. 一. 扑克牌面绘制 Cards.dll支持Windows自带的游戏,如Solitaire(纸牌游戏).如果我们知

模拟简单猜扑克牌大小的Win32控制台游戏

本文配套源码 在坛子里经常能看到MFC编制的GUI游戏,功能强大,界面美观,人机交互便利等优点是控制台程序是无可比拟的.但对于刚初步了解 C/C++的朋友们是无法短期内能学会编写MFC游戏的.于是小弟采用 Win32 控制台 项目做了一个C++的小游戏,希望对于那些朋友,对大一, 大二的学生编写字符界面的小程序有所帮助. 该游戏的名称不妨命名为Hi(gh)-Low,其玩法和规则如下: 1.玩法 ①洗牌:每盘游戏开始之前,使扑克牌的排列顺序充分随机: ②发牌:每局开始时,从未使用的扑克牌集合中顺序

c-采用深度优先搜索进行扑克牌的排序

问题描述 采用深度优先搜索进行扑克牌的排序 #include<iostream> using namespace std; int count=0; int book[5]; char card[5][2]={'2','C','A','D','A','C','J','C','J','H'}; char a[5][2]; void dfs(int step){ if(step==5){ count++; return ; } for(int i=0;i<5;i++){ if(/*a[ste

《iOS创意程序设计家》——第6.4节事件检测

6.4 事件检测 iOS创意程序设计家 界面控制器除了负责界面的管理以及布局外,还负责事件的传递.这些事件包括我们在第5章已经介绍过的触控事件,还有接下来要介绍的晃动检测事件.这些事件都定义在UIResponder类里面,而无论是界面控制器UIViewController还是界面UIView,它们都继承自UIResponder类. 6.4.1 晃动检测 首先,我们来看看晃动事件的处理.与触控事件类似的是,晃动检测也是由一连串的事件所组成的,不过,要让您的应用程序支持晃动检测,必须让您的界面控制器

C语言及程序设计基础 课程主页

关于本课 本课基于迂者在CSDN学院建设的在线课程,为与本职工作相关的人群提供的限期免费课程.视频和课件在专用平台发布,本课程主页提供相关的实践资源. 第1个免费访问期限为2015年7月至2016年2月.2016年2月将向相关人员提供第2个期限的访问方法. 本课与CSDN学院商业版课程的区别在本文最后. 学习流程建议:1.看视频:2.(可选)看讲义:3.做自测:4.(可选)调试课堂示例:5.做程序阅读题:6.做实践项目:7.(强烈建议)在CSDN的博客公开你的实践成果. 祝学习顺利!敬请提出建议

基于AForge.Net框架的扑克牌识别

原文:基于AForge.Net框架的扑克牌识别 版权所有 野比 2012 原文地址:点击查看 作者:Nazmi Altun Nazmi Altun著,野比 译  下载源代码 - 148.61 KB  下载demo - 3.1 MB   介绍 (图片上的字:方块4,方块J,黑桃2) 用机器人配上扑克牌识别系统,就可以在二十一点一类的扑克游戏中扮演荷官或是人类玩家的角色.实现这样的程序同样也是学习计算机视觉和模式识别的好途径. 本文涉及到的AForge.NET框架技术有二值化.边缘检测.仿射变换.B

高手。。麻烦了。。生成扑克牌问题 100分!

问题描述 使用JAVA编写以下程序:1.请定义一个名为Card的扑克牌类,该类有两个private访问权限的字符串变量face和suit:分别描述一张牌的牌面值(如:A.K.Q.J.10.9.--3.2等)和花色(如:"黑桃"."红桃"."梅花"."方块"):定义Card类中的public访问权限的构造方法,为类中的变量赋值:定义protected访问权限的方法getFace(),得到扑克牌的牌面值:定义protected访问

JAVA collection集合之扑克牌游戏实例_java

Collection 层次结构中的根接口.Collection表示一组对象,这些对象也称为collection的元素.一些 collection 允许有重复的元素,而另一些则不允许.一些 collection 是有序的,而另一些则是无序的.JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现.此接口通常用来传递 collection,并在需要最大普遍性的地方操作这些 collection. 主要内容:这里使用collection集合,模拟香港电影中大佬们玩的