---恢复内容开始---

今天我们来讲的就是项目《掷骰子》

首先我们先下载资源包,也就是我们需要的图片【点击图片下载】

    在我们下载完图片之后,我们就可以开始创建项目

一、我们项目的做法可以有两种:

                  

首先我们要看一下我们需要看一下我们的要求成果图

我们创建一个新项目,定义一个throwsDice名字,使用swift语言

创建完之后我们就会看到上面这个图:

   我们需要关注ViewController和Main

      1、ViewController就是一个视图控制器

       2、Main就是我们的视图

  1. 首先我们先把界面画好

在放骰子的地方需要三张图片,那么我们需要在属性那里找到imageview,

调整imageview的大小,再复制粘贴出2份,就成了下图所示

             

接下来就是点击按钮,买大买小豹子,

    如下图找到button,拖拽到界面上,调整位置和大小,复制出两份,双击按钮写按钮作用,如下图

      

最后就是关于显示买家和庄家的钱数

      我们使用label,,调整位置和大小,复制粘贴多份,双击命名,填写初始值

        

现在我们的界面就做好了

如何将图片放在imageview上呢?

将我们下载的图片压缩包解压之后,拖入项目中,我们一般是放在Assets.xcassets的一个文件夹中,这里我为了快速,就直接放在外面了

之后点击对应的imageview,点击右上角的属性,找到图片这一行没选择自己在界面上第一次显示的图片(初始化图片)

        

然后效果就是这样的了!

    2.将视图和视图控制器关联起来

    3.将功能实现(1、图片切换   2、按钮买大买小   3、判断输赢进行加减运算)

            我们的功能在Viewcontroller中进行

如何进行绑定呢?

  点击Main,再点击右上角两个圈圈的图案就会显示如图

点击你要绑定的imageview或者button或者label

右键直接拉到视图控制器这个类中,一般的选outlet   事件选action。注意:在这里没有顶级类

这个是按钮的绑定事件,第一个按钮是买大,第二个是卖豹子,第三个是买小

切换图片,就是上图中我们调用的changeImage方法,所以我们要自定义一个方法来切换

    在图中使用的imageNumber我们在方法外就要定义赋初始值  var imageNumber = 0  和 我们使用的timer初始化 var timer:Timer?

如何判断是买大买小,我们使用枚举来区别:在类外设置一个枚举,在类中初始化var selectType = SelectType.Big,这样就可以调用枚举进行判断你点击的是买大还是买小

判断输赢给买家和庄家进行加减,当然图中使用的一些属性需要定义

var dice1Num:Int = 0

var dice2Num:Int = 0

var dice3Num:Int = 0

var playerMoney = 1000

var bossMoney = 1000

于是我们这个简单的掷骰子就基本完成了,当然如果我们让它可以横屏同样玩,则需要加约束

下面就是控制器中所有的代码

 //
// ViewController.swift
// throwsDice
//
// Created by c03 on 2016/11/25.
// Copyright © 2016年 MakeSmallApp. All rights reserved.
// import UIKit
//定义一个枚举
enum SelectType{
case Big,Same,Small
}
class ViewController: UIViewController { @IBOutlet weak var playLabel: UILabel! @IBOutlet weak var bossLabel: UILabel! @IBOutlet weak var diceViewOne: UIImageView!
@IBOutlet weak var diceViewTwo: UIImageView!
@IBOutlet weak var diceViewThree: UIImageView! var selectType = SelectType.Big
var dice1Num:Int =
var dice2Num:Int =
var dice3Num:Int =
var playerMoney =
var bossMoney = //判断输赢
func judgeResult(){
let zhongjian = dice1Num + dice2Num
let sum = zhongjian + dice3Num
switch selectType {
case .Big:
if sum > {
self.playerMoney+=
self.bossMoney-=
}else{
self.playerMoney-=
self.bossMoney+=
}
case .Same:
if dice1Num == dice2Num && dice2Num == dice3Num {
self.playerMoney+=
self.bossMoney-=
}else{
self.playerMoney-=
self.bossMoney+=
}
case .Small:
if sum < {
self.playerMoney+=
self.bossMoney-=
}else{
self.playerMoney-=
self.bossMoney+=
} default:
print("这是默认的")
}
playLabel.text = String(playerMoney)
bossLabel.text = String(bossMoney) } func changeImage(){
let i1 = arc4random()% +
let name1 = String(i1) + ".gif"
let image1 = UIImage(named: name1)
diceViewOne.image = image1
dice1Num = Int(i1) let i2 = arc4random()% +
let name2 = String(i2) + ".gif"
let image2 = UIImage(named: name2)
diceViewTwo.image = image2
dice2Num = Int(i2) let i3 = arc4random()% +
let name3 = String(i3) + ".gif"
let image3 = UIImage(named: name3)
diceViewThree.image = image3
dice3Num = Int(i3) imageNumber +=
if imageNumber > {
timer?.invalidate()
imageNumber =
judgeResult()
}
}
var timer:Timer?
var imageNumber = @IBAction func btnOne(_ sender: Any) {
selectType = .Big
//定义一个定时器来控制换图片
timer?.invalidate()
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.changeImage), userInfo: nil, repeats: true)
}
@IBAction func btnTwo(_ sender: Any) {
selectType = .Same
//定义一个定时器来控制换图片
timer?.invalidate()
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.changeImage), userInfo: nil, repeats: true)
}
@IBAction func btnThree(_ sender: Any) {
selectType = .Small
//定义一个定时器来控制换图片
timer?.invalidate()
timer = Timer.scheduledTimer(timeInterval: 0.1, target: self, selector: #selector(ViewController.changeImage), userInfo: nil, repeats: true)
} override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
} }

大家可以试试,写个博客半天就没了,时间过的好快,吃饭去了!Bye

掷骰子-IOS新手项目练习(抱歉,由于个人原因,图片没显示,要源码的项目私聊)的更多相关文章

  1. Flink 源码解析 —— 项目结构一览

    Flink 源码项目结构一览 https://t.zsxq.com/MNfAYne 博客 1.Flink 从0到1学习 -- Apache Flink 介绍 2.Flink 从0到1学习 -- Mac ...

  2. MyBatis 源码分析-项目总览

    MyBatis 源码分析-项目总览 1.概述 本文主要大致介绍一下MyBatis的项目结构.引用参考资料<MyBatis技术内幕> 此外,https://mybatis.org/mybat ...

  3. [C#] .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题

    作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持"Add As Link"方式 ...

  4. 前端项目模块化的实践1:搭建 NPM 私有仓库管理源码及依赖

    以下是关于前端项目模块化的实践,包含以下内容: 搭建 NPM 私有仓库管理源码及依赖: 使用 Webpack 打包基础设施代码: 使用 TypeScript 编写可靠类库 使用 TypeScript ...

  5. 集成xadmin源码到项目的正式姿势

    xadmin是强大的,但是为了更好的后期定制开发,可能会修改到xadmin的源码. 因此还是推荐将xadmin源码集成到自己的项目中. 1.pip install xadmin 安装xadmin的模块 ...

  6. .NET Core项目修改project.json来引用其他目录下的源码等文件的办法 & 解决多框架时 project.json 与 app.config冲突的问题

    作者: zyl910 一.缘由 项目规模大了后,经常会出现源码文件分布在不同目录的情况,但.NET Core项目默认只有项目目录下的源码文件,且不支持“Add As Link”方式引入文件.这时需要手 ...

  7. 14. vue源码入口+项目结构分析

    一. vue源码 我们安装好vue以后, 如何了解vue的的代码结构, 从哪里下手呢? 1.1. vue源码入口 vue的入口是package.json 来分别看看是什么含义 dependences: ...

  8. 05.ElementUI源码学习:项目发布配置(github pages&npm package)

    0x00.前言 书接上文.项目第一个组件已经封装好,说明文档也已编写好.下面需要将说明文档发布到外网上,以此来展示和推广项目,使用 Github Pages功能实现.同时将组件发布之 npm 上,方便 ...

  9. Spring源码 02 项目搭建

    参考源 https://www.bilibili.com/video/BV1tR4y1F75R?spm_id_from=333.337.search-card.all.click https://ww ...

随机推荐

  1. 使用maven一步一步构建spring mvc项目

    1      使用eclipse构建maven web项目 1.1新建Maven的web项目 打开菜单File –New-MavenProject. 点击Next 选择模板类型archtype——ma ...

  2. linux基础学习

    1.默认不写端口号的就是80端口 本地ip:localhost或者127.0.0.1 2.用户管理 id和whoami:可以查看当前用户 who和w查看当前已经登录的用户 (1)添加用户,用户默认的家 ...

  3. 基于redis分布式锁实现“秒杀”

    转载:http://blog.5ibc.net/p/28883.html 最近在项目中遇到了类似“秒杀”的业务场景,在本篇博客中,我将用一个非常简单的demo,阐述实现所谓“秒杀”的基本思路. 业务场 ...

  4. javascript type操作

    var a; type a;//结果为undefined type b;//结果也是undefinedalert(a);//弹出undefinedalert(b);//错误代码  上述代码,type ...

  5. [手机取证] Jonathan Zdziarski公开的苹果iOS后门及POC视频

    Jonathan Zdziarski 近日在其推特上公布了此“后门”的研究及POC视频,并表示全球媒体“夸大”了此事,自己“从未表示过认为此后门与NSA的监控行为有关”. 视频 http://pan. ...

  6. 如何通过JavaScript构建Asp.net服务端控件

    摘要 虽然ASP.NET的服务器控件一直被大家所诟病,但是用户控件(ACSX)在某些场景下还是非常有用的. 在一些极特珠的情况下,我们会使用JavaScript动态的构建页面中的控件,但假设遇到了我要 ...

  7. Sublime Text

    今天在网上找了个Sublime Text 3 Build 3065 的 license key .在最新的Build 3083 下可以使用,记录下. ----- BEGIN LICENSE ----- ...

  8. OpenGL学习笔记0——安装库

    最近需要做一个基于Zigbee室内无线定位的系统,受到TI公司ZigBee Sensor Monitor软件的启发,打算用OpenGL来做一个3D显示空间内物体位置的程序.学习阶段选择VS2010+O ...

  9. [ json editor] 如何在网页中使用Json editor 插件

    [目的] 在自己的网页上交由用户进行json的可视化编辑 [难点]1.json中含有递归嵌套的数组和对象 2.json中的基本值类型有数字.字符串和布尔型 [方法]使用daviddurman的Flex ...

  10. 永久修改 CMD 的 PROMPT 显示结果/给cmd命令显示加上运行时间

    1.环境 windows10 系统 2.打开 cmd ,快捷键 Ctrl + x 然后a 3.输入 REG ADD "HKLM\SYSTEM\CurrentControlSet\Contro ...