C#面向对象编程实例-猜拳游戏
1.需求
现在要制作一个游戏,玩家与计算机进行猜拳游戏,玩家出拳,计算机出拳,计算机自动判断输赢。
2.需求分析
根据需求,来分析一下对象,可分析出:玩家对象(Player)、计算机对象(Computer)、裁判对象(Judge)。 玩家出拳由用户控制,使用数字代表:1石头、2剪子、3布 计算机出拳由计算机随机产生 裁判根据玩家与计算机的出拳情况进行判断输赢
3.类对象的实现
玩家类示例代码
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778classPlayer{string name;publicstring Name{get {returnname; }set { name = value; }}publicintShowFist(){Console.WriteLine("请问,你要出什么拳? 1.剪刀 2.石头 3.布");intresult = ReadInt(1,3);string fist = IntToFist(result);Console.WriteLine("玩家:{0}出了1个{1}", name, fist);returnresult;}/// <summary>/// 将用户输入的数字转换成相应的拳头/// </summary>/// <param name="input">/// <returns></returns>privatestring IntToFist(intinput){string result = string.Empty;switch(input){case1:result ="剪刀";break;case2:result ="石头";break;case3:result ="布";break;}returnresult;}/// <summary>/// 从控制台接收数据并验证有效性/// </summary>/// <param name="min">/// <param name="max">/// <returns></returns>privateintReadInt(intmin,intmax){while(true){//从控制台获取用户输入的数据string str = Console.ReadLine();//将用户输入的字符串转换成Int类型intresult;if(int.TryParse(str, out result)){//判断输入的范围if(result >= min && result <= max){returnresult;}else{Console.WriteLine("请输入1个{0}-{1}范围的数", min, max);continue;}}else{Console.WriteLine("请输入整数");}}}}计算机类示例代码
123456789101112131415161718192021222324252627282930classComputer{//生成一个随机数,让计算机随机出拳Random ran =newRandom();publicintShowFist(){intresult = ran.Next(1,4);Console.WriteLine("计算机出了:{0}", IntToFist(result));returnresult;}privatestring IntToFist(intinput){string result = string.Empty;switch(input){case1:result ="剪刀";break;case2:result ="石头";break;case3:result ="布";break;}returnresult;}}裁判类示例代码 这个类通过一个特殊的方式来判定结果
12345678910111213141516171819202122classJudge{publicvoidDetermine(intp1,intp2){//1剪刀 2石头 3布//1 3 1-3=-2 在玩家出1剪刀的情况下,计算机出3布,玩家赢//2 1 2-1=1 在玩家出2石头的情况下,计算机出1剪刀,玩家赢//3 2 3-2=1 在玩家出3布的情况下,计算机出2石头,玩家赢if(p1 - p2 == -2|| p1 - p2 ==1){Console.WriteLine("玩家胜利!");}elseif(p1 == p2){Console.WriteLine("平局");}else{Console.WriteLine("玩家失败!");}}}
4.对象的实现
12345678910111213staticvoidMain(string[] args){Player p1 =newPlayer() { Name="Tony"};Computer c1 =newComputer();Judge j1 =newJudge();while(true){intres1 = p1.ShowFist();intres2 = c1.ShowFist();j1.Determine(res1, res2);Console.ReadKey();}}
C#面向对象编程实例-猜拳游戏的更多相关文章
- js原生设计模式——3简单工厂模式\js面向对象编程实例
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- python面向对象编程实例解析
1. 类和函数 面向对象编程的例子: #!/usr/bin/env python # -*- coding: utf-8 -*- class Person(object): #在属性和变量的前面增加“ ...
- Python3面向对象编程实例
/*认真研究完这个实例,理解python面向对象编程的方法*/class Person: """人员信息""" # 姓名(共有属性) nam ...
- 大数据笔记(二十四)——Scala面向对象编程实例
===================== Scala语言的面向对象编程 ======================== 一.面向对象的基本概念:把数据和操作数据的方法放到一起,作为一个整体(类 c ...
- php 面向对象编程实例 __construct 和 __destruct 区别
大多数类都有一种称为构造函数的特殊方法.当创建一个对象时,它将自动调用构造函数,也就是使用new这个关键字来实例化对象的时候自动调用构造方 法.构 造函数的声明与其它操作的声明一样,只是其名称必须是_ ...
- javascript 仿面向对象编程实例代码(私有,公共变量。。。)
//定义一个javascript类 function JsClass(privateParam,publicParam){//构造函数 var priMember = privateParam; // ...
- python面向对象编程实例
1.编写程序, 编写一个学生类, 要求有一个计数器的属性, 统计总共实例化了多少个学生 class Student: """学生类""" c ...
- C++面向对象编程实例
实例一.四位运算符操作 main.cpp. #include <iostream> #include "operator_1.h" #include <stdio ...
- Python实用笔记 (22)面向对象编程——实例属性和类属性
由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(object): def __init__(se ...
随机推荐
- FancyBox——jQuery弹出窗口插件
最近工作项目中有用到这款插件,就查找了一下相关资料和用法,下面是一些基本的简单用法,比较容易掌握,有需要的小伙伴可以参考.:) FancyBox是一款基于jquery开发的类Lightbox插件.支持 ...
- 利用 css 制作简单的提示框
在网页开发中,为了提高用户体验,经常会用到一些提示框来引导用户,这里分享下一些简单的提示框的制作 1.首先类似一个长方形右上角一个关闭按钮 这里用到的主要是一些定位的知识,运用relative和abs ...
- 10_Jaxws使用自定义pojo发布服务
[简述] 查询三天的天气信息(天气概况.日期.温度),测试jaxws是否支持自定义pojo发布服务. [开发过程] 服务端: 1.自定义pojo(天气概况.日期.温度) 2.开发SEI接口及实现类 3 ...
- 暑假集训(2)第五弹 ----- Who's in the Middle(poj2388)
G - Who's in the Middle Crawling in process... Crawling failed Time Limit:1000MS Memory Limit:32 ...
- js闭包的使用例子
网上关于闭包的介绍太多,这就导致了泛滥,对于新手来说,网上好多讲解就说了闭包是啥,还都是用下面这种例子: 我的天啊,我们都看了不知道多少遍了,看完有啥用?在什么场合下用啊? 于是我翻阅各种资料,自己总 ...
- java File详解
一.简介 File类是“文件”和“目录名”的抽象表示形式.因此在java语言中,File类既可以表示文件也可以表示目录. 尽管java.io定义的大多数类是实行流式操作的,而File类则不是,它没有指 ...
- 实习笔记-3:ef实体操作错误篇
学习笔记 1.json序列化ef实体是报错:“序列化类型为“System.Data.Entity.DynamicProxies.XXXX.... 对象时检测到循环引用.” 公司里用ef来生成实体.但是 ...
- Linux C 程序 字符串运算符-表达式(TWO)
1.字符串常量 双引号"" :eg:"china" ,字符串在存储的时候会以一个\0为结束标志.2.符号常量 ,给常量取一个名字. #include< ...
- 使用WebClient上传文件时的一些问题
最近在使用WebClient做一个客户端上传图片到IIS虚拟目录的程序的时候,遇到了一些问题,这里主要给出参考步骤分享给大家. 测试环境 服务器端:Windows Server 2003,IIS6.0 ...
- WPF异步调用WCF服务
wpf调用wcf时,第一次访问总耗时到达几秒,影响界面的用户体验,因此在wpf加载界面和加载数据时采用异步加载,即异步访问wcf服务, 由于是否采用异步加载和服务端无关,仅仅由客户端自己根据需要来选择 ...