Windows游戏编程之从零开始d I'm back~~恩,几个月不见,大家还好吗? 这段时间真的好多童鞋在博客里留言说或者发邮件说浅墨你回来继续更新博客吧. woxiangnifrr童鞋说每天都在来浅墨的博客逛一下看有没有更新,"每天都来就像看女神那般不依不舍",弄得我再不更新都不好意思了,哈哈~怎么说呢,前段时间忙毕设,回国,暑假,间隔年旅行休整,然后是适应新的生活,各种事情,也真正没有心境来更新博客了,最近正好心境安定下来,就继续开始写博.额,关于思想汇报改天我专门写一篇文章和大…
title: Java并发编程的艺术读书笔记(2)-并发编程模型 date: 2017-05-05 23:37:20 tags: ['多线程','并发'] categories: 读书笔记 --- 1.并发编程模型的两个关键问题 1.1线程之间如何通信. 通信是指线程之间以何种机制来交换信息.有两种:共享内存和消息传递.在共享内存的并发模型里,线程之间共享程序的公共状态,通过读写内存中的公共状态进行隐式通信.在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过发送消息来显示进行通信.j…
title: Java并发编程的艺术读书笔记(1)-并发编程的挑战 date: 2017-05-03 23:28:45 tags: ['多线程','并发'] categories: 读书笔记 --- 1.多线程不一定就比单线程快,因为线程有创建和上下文切换的开销. 1.1vmstat测试上下文切换次数,Lmbench3测时长 1.2如何减少上下文切换 1.2.1无锁并发编程:多线程竞争锁时,会引起上下文切换,所以多线程处理数据时,可以用一些办法来避免使用锁,如将数据的ID取模分段,不同的线程处理…
<Essential C++>读书笔记 之 C++编程基础 2014-07-03 1.1 如何撰写C++程序 头文件 命名空间 1.2 对象的定义与初始化 1.3 撰写表达式 运算符的优先级(precedence) 1.5 如何运用Arrays(数组)和Vectors(向量) 1.6 指针带来弹性 指针的使用 1.1 如何撰写C++程序 返回 函数(function)是一块独立的程序代码序列(code sequence),能够执行一些运算.它包含4个部分: 返回值型别(return type)…
1.矩形碰撞 所谓矩形碰撞,就是利用两个矩形之间的位置关系来进行判断,如果矩形的像素在另外一个矩形之中,或者之上都可以认为这两个矩形发生了碰撞. 如果单纯的去考虑哪些情况会判定两个矩形发生碰撞,倒不如反思考虑两个矩形之间不发生碰撞的几种情况.其实两个矩形不发生碰撞的情况就上下左右这四种. 下面通过实例项目来完成对应的四种判定. 先看实例效果图: 新建项目,游戏框架为 SurfaceView 游戏框架,修改 MySurfaceView 类如下: package com.example.ex4_15…
1. Animation动画   在Android 中,系统提供了动画类 Animation ,其中又分为四种动画效果: ● AlphaAnimation:透明度渐变动画 ● ScaleAnimation:渐变尺寸缩放动画: ● TranslateAnimation:移动动画 ● RotateAnimation:旋转动画   这4种动画效果的创建方法如下: (1)  AlphaAnimation 透明度渐变动画 Animation alphaA = new AlphaAnimation(floa…
Bitmap 是图形类,Android 系统支持的图片格式有 png.jpg.bmp 等. 对位图操作在游戏中是很重要的知识点,比如游戏中需要两张除了大小之外其他完全相同的图,那么如果会对位图进行缩放操作,很容易就节约了一张图片资源:这样既节约了美工的时间,更节约游戏安装包的大小:当然除了缩放,还有很多操作,例如对位图进行旋转.镜像.设置透明度等等操作都会节约很大的资源. 首先创建一个位图实例.位图的实例不能通过 new,如果想通过一张图片资源文件创建一个位图,则要通过位图工厂来索引图片资源文件…
1.Canvas 画布 画布类 Canvas 封装了图形和图片绘制等内容,此类常用的函数说明如下: drawColor(int color) 作用:绘制颜色覆盖画布,常用于刷屏 参数:颜色值,也可用十六进制形式表示(ARGB) drawText(String text,float x,float y,Paint paint) 作用:绘制文本字符 第一个参数:文本内容 第二.三个参数:文本的X.Y坐标 第四个参数:画笔实例 drawPoint(float x,float y,Paint paint…
1. SurfaceView 游戏框架实例 实例效果:就是屏幕上的文本跟着点击的地方移动,效果图如下: 步骤: 新建项目“GameSurfaceView”,首先自定义一个类"MySurfaceView",此类继承SurfaceView,并实现android.view.SurfaceHolder.Callback 接口,代码如下 package com.example.ex4_5; import android.content.Context; import android.graphi…
简单的记录下笔记,具体可百度! Android SDK (Software Development Kit)- Android 软件开发工具包,用于辅助Android 操作系统软件开发,是开发Android 软件.文档.范例.工具的一个集合.Android NDK (Native Development Kit) - 类似 Android SDK,可用C/C++语言编写Android程序. developer.android.com - 可查阅到 Android SDK. 开发指南.API说明等…
剪切区域也称为可视区域,是由画布进行设置的:它指的是在画布上设置一块区域,当画布一旦设置了可视区域,那么除此区域外,绘制的任何内容都将看不到:可视区域可以是圆形.矩形等等. 画布提供了三种设置可视区域的方法. 1.通过坐标,设置矩形可视区域clipRect(int left,int top,int right,int bottom)作用:为画布设置矩形可视区域第一.二个参数:为可视区域的左上角第三.四个参数:为可视区域的右下角 2.利用 Path 来设置可视区域的形状clipPath(Path…
1.Paint画笔 Panit(画笔)是绘图额辅助类,其类中包含文字和位图额样式.颜色等属性信息.Paint 的常用方法如下: setAntiAlias(boolean aa) 作用:设置画笔是否无锯齿 参数:true 表示无锯齿,false 表示有锯齿,默认为 false . setAlpha(int a) 作用:设置画笔的透明度 参数:透明值 setTextAlign(Paint.Align align) 作用:设置绘制文本的锚点 参数:Paint.Align 类中的常量 measureTe…
3.7 ProgressBar ProgressBar类官方文档地址:http://developer.android.com/reference/android/widget/ProgressBar.html 在Android应用开发中,ProgressBar(运行进度条)是比较常用到的组件,例如下载进度.安装程序进度.加载资源进度显示等.在Android中提供了两种样式来分别表示在不同状态下显示的进度条,下面来实现这两种样式.默认进度条是圆形,通过style属性来指定系统进度条的大小:sty…
3.4 EditText EditText类官方文档地址:http://developer.android.com/reference/android/widget/EditText.html EditText继承TextView,所以EditText具有TextView的属性特点,下面主要介绍一些EditText的特有的输入法的属性特点android:layout_gravity="center_vertical":设置控件显示的位置:默认top,这里居中显示,还有bottomand…
第12章 Direct3D绘制基础 1. 顶点缓存 计算机所描绘的3D图形是通过多边形网格来构成的,网网格勾勒出轮廓,然后在网格轮廓的表面上贴上相应的图片,这样就构成了一个3D模型.三角形网格是构建物体模型的基本单元,而一个三角形有3个顶点,为了能够使用大量三角形组成三角形网格来描述物体,需要首先定义号三角形的顶点(Vertex),3个顶点确定一个三角形,顶点除了定义每个顶点的坐标位置外,还还含有颜色等其他属性. 在Direct3D中,顶点的具体表现形式是顶点缓存,顶点缓存保存了顶点数据的内存空…
第5章 透明贴图 像这样直接贴图会产生这种情况,所以我们需要透明贴图. 透明遮罩法:主要利用BitBlt函数中Raser(光栅)值的运算,需要准备素材图和遮罩图: 这个方法的原理解释见书131页. 示例程序: #include <windows.h> #define WINDOW_WIDTH 800 //为窗口宽度定义的宏,以方便在此处修改窗口宽度 #define WINDOW_HEIGHT 600 //为窗口高度定义的宏,以方便在此处修改窗口高度 #define WINDOW_TITLE L…
<C#从现象到本质>读书笔记第3章C#类型基础(下) 常量以关键字const修饰.C#支持静态字段(类型字段)和实例字段. 无参属性的get方法不支持参数,而有参属性的get方法支持传入一个或更多参数,set方法支持传入两个或更多参数. 通过属性的封装,保留了它与外部交互的能力,又实现了一种可靠的读写机制. static关键字只能用于类而不能用于结构. 不能显式地为结构声明无参数地构造函数. 静态构造函数的目的是为了安全地给静态成员赋值. 当创建第一个实例之前,堆上没有类型对象,所以要调用静态…
<C#从现象到本质>读书笔记第二篇 第2章 C#类型基础(上) 类型指的是集合{类,结构,接口,枚举,委托}中的任意一个成员.任何拥有某类型的值(value)称为某类型的一个实例(instance). 类型可以被分为值类型(结构,枚举,整型,布尔型,datetime)以及引用类型(类.接口.指针.字符串.委托.数组). C#支持6种类型访问修饰符.访问范围大小排序为: 1)public:没有限制. 2)protected internal:只能在所在程序集.定义的类型或派生类型进行访问. 3)…
对于数据的存储,Android 提供了4种保存方式. (1)SharedPreference 此方法适用于简单数据的保持,文如其名,属于配置性质的保存,不适合比较大的情况,默认存放在手机内存里 (2)FileInputStream/FileOutputStream 此方式比较适合游戏的保存和使用,流文件数据存储可以保持较大的数据,而且通过此方式不仅能把数据存储在手机内存中,也能将数据保存到手机额SDcard中. (3)SQLite 此方式也适合游戏的保存和使用,不仅可以保存较大的数据,而且可以将…
在一款游戏中,除了华丽的界面 UI 直接吸引玩家外,另外重要的就是游戏的背景音乐与音效:合适的背景音乐以及精彩的音效搭配会令整个游戏上升一个档次. 在 Android 中.常用于播放游戏背景音乐的类是 MediaPlayer, 而用于游戏音效的则是 SoundPool 类.   1. MediaPlayer MediaPlayer 实例化不是 new 出来的,而是通过调用静态方法得到的,这里有几种静态方法:   create(Context context, Uri uri) 作用:通过Uri创…
1.游戏适屏的简述和作用 由于市面上安装 Android 系统的手机不断增多,出现了各种分辨率.各种屏幕尺寸的Android 系统手机.为了保证一个游戏或者一个软件能在所有的 Android 手机上正常显示,常用的适屏做法有:利用屏幕宽高.位图宽高来设置一些游戏元素的位置:字体的适屏做法最好的使用字体图,这样文字不会因为手机分辨率不同而不同,毕竟图片大小是固定不变的. 2.让游戏主角动起来实例演示将一张由多行多列的动作帧组成的图片实现动态效果. 新建项目,游戏框架为SurfaceView 框架,…
对于玩家来说,游戏是动态的:对于游戏开发人员来说,游戏是静态的,只是不停地播放不通的画面,让玩家看到了动态的效果. 进入Android之前,首先要熟悉三个重要的类:View(视图).Canvas(画布).Paint(画笔).通过画笔,可以在画布上画出各种精彩的图形.图片等等,然后通过视图可以将画布上的内容展现在手机屏幕上. 其次要熟悉“刷屏”的概念.绘制在画布中的图像不管是图片还是图形,都是静态的,只有通过不断的展现不同的画布,才能实现动态的效果.在手机上,画布永远只是一张,所以不可能通过不断地…
3.9 TabSpec与TabHost TabHost类官方文档地址:http://developer.android.com/reference/android/widget/TabHost.html Android 实现tab视图有2种方法,一种是在布局页面中定义<tabhost>标签,另一种就是继承tabactivity.但是我比较喜欢第二种方式,应为如果页面比较复杂的话你的XML文件会写得比较庞大,用第二种方式XML页面相对要简洁得多. <?xml version="1…
本人看的是PDF文档,很多都是直接都是复制粘贴的记录,简单的记录下笔记! 2.1 创建一个Android项目 Application Name: 应用名称(安装在手机上显示的名字)Project Name : 项目名称Package Name : 包名 Min SDK Version : 最低运行版本号Create Activity : 主Activity类名 Minimum Required SDK : 最低要求的sdkTarget SDK : 选择目标SDKCompile SDK : 编译S…
1.不可盲目看API文档很多人在接触学习一门新的平台语言时,总喜欢先去探究一番API文档.先不说成效如何,至少编者认为这种方式不适合大部分人来效仿,主要原因在于 API 领域广泛,牵涉到的知识点太多,而对于刚刚接触平台开发语言的大部分人来说,遗忘速度远远大于记忆!这种做法是大量消耗精力.小量吸取知识的方法,只会事倍功半. 2.前人栽树,后人乘凉对于初学者来说,任何想要学习与掌握的知识点,之前都会有高人总结过:所以建议大家每学习一个知识点,都尽可能的先动手去网上搜索和学习别人总结出来的相关知识点的…
Android 中常用的计量单位Android有时候需要一些计量单位,比如在布局Layout文件中可能需要指定具体单位等.常用的计量单位有:px.dip(dp).sp,以及一些不常用的pt.in.mm.下面详细介绍下这些计量单位之间的区别和联系.in:英寸(长度单位):mm:毫米(长度单位):pt:磅/点,1/72英寸(一个标准的长度单位):sp:全名 scaled pixels-best for text size,放大像素,与刻度无关,可以根据用户的字体大小就行缩放,主要用来处理字体的大小:…
在Android应用开发中,Dialog(对话框)创建简单且易于管理因而经常用到,对话框默认样式类似创建样式的Activity.首先介绍android.app.AlertDialog下的Builder这个类.Builder是AlertDialog类的子类,而且还是它的内部类.正如其名所示,Builder相当于一个具体的构造者,通过Builder设置对话框属性,然后将Builder(对话框)显示出来. 本人做了个Dialog显示效果集合的小Demo,效果如下(GIF图片较大,需要点加载时间): 主…
3.1 Button Button这控件不用多说,就是一个按钮,主要是点击后进行相应事件的响应. 给组件添加ID属性:定义格式为 android:id="@+id/name",这里的name是自定义的,不是索引变量.“@+”表示新声明,"@"表示引用,例如:"@+id/tv" 表示新声明一个id,是id名为tv的组件:"@id/tv" 表示引用id名为tv的组件. 给按钮添加点击事件响应  想知道按钮是否被用户点击,就需要一个…
本章将会介绍: 传感器的API 加速器编程,设备的方向,近场检测 网络编程 蓝牙编程 上述的技术的应用场景很多,比如: 1.检测当前的网络是否可用,并提醒用户,检测当前的网络类型,比如Wifi.3G.EDGE网络. 2.加速器可以用来提供随机种子,比如摇晃设备时随机访问数据源中的数据. 3.用户水平和垂直放置设备时应用提供不同的视图. 传感器 android设备常见的硬件有:加速器,罗盘,麦克风,陀螺仪等. Android的Sensor类抽象了所有的传感器设备.实际的传感器有厂商,名称,精确度,…
第11章 Direct3D编程基础 2D游戏是贴图的艺术,3D游戏是渲染的艺术.这句话在我学过了之前的GDI编程之后,前一句算是有所体会,现在是来理解后一句的时候了. 安装DirectX SDK配置啥的就不说了,直接进入正题,先来个典型的Direct3D程序框架图: 主要分为5个部分: 创建一个Windows窗口 Direct3D的初始化 消息循环 渲染图形 结束应用程序,清除在初始化阶段锁创建的COM对象,退出程序 至于COM (Component Object Model, 组件对象模型)…