Browsed by
Month: September 2006

lua 学习笔记12

lua 学习笔记12

/******************/  在c++中使用lua/******************/费了九牛二虎之力,总算可以在vs 2003的c++环境中使用lua了。方法如下:1、解压缩下载的lua原文件包 ,把其ect目录下的luavs.bat,拷贝到lua目录下,在vs2003的命令行工具中运行它,生成编译好的文件。 2、在vs2003中建立一个控制台项目,把刚才生成的一堆src目录下的文件拷到这个项目下,新建一个main.cpp文件,写入如下内容: #include <stdio.h>#include <string.h> extern"C"{#include "lua.h"#include "lauxlib.h"#include "lualib.h"} int main(void){   char buff[256];      int error;      lua_State *L = lua_open();   /* opens Lua */      luaopen_base(L);             /* opens the basic library */      luaopen_table(L);            /* opens the table library */      luaopen_io(L);               /* opens the I/O library */      luaopen_string(L);           /* opens the string lib. */      luaopen_math(L);             /* opens the math lib. */          while (fgets(buff, sizeof(buff), stdin) != NULL) {        error = luaL_loadbuffer(L, buff, strlen(buff), "line") ||                lua_pcall(L, 0, 0, 0);       …

Read More Read More

常成员函数

常成员函数

  使用const关键字进行说明的成员函数,称为常成员函数。只有常成员函数才有资格操作常量或常对象,没有使用const关键字说明的成员函数不能用来操作常对象。常成员函数说明格式如下:   <类型说明符> <函数名> (<参数表>) const; 其中,const是加在函数说明后面的类型修饰符,它是函数类型的一个组成部分,因此,在函数实现部分也要带const关键字。下面举一例子说明常成员函数的特征。 #includeclass R{public:R(int r1, int r2) { R1=r1; R2=r2; }void print();void print() const;private:int R1, R2;}; void R::print(){cout< } void R::print() const{cout< } void main(){R a(5, 4);a.print();const R b(20, 52);b.print();}   该例子的输出结果为:   5,4  20;52   该程序的类声明了两个成员函数,其类型是不同的(其实就是重载成员函数)。有带const修饰符的成员函数处理const常量,这也体现出函数重载的特点。

一个智力题

一个智力题

现有1000个苹果,10个盒子,问各个盒子内应该分别放入多少个苹果,才能使得用户要买任意1至1000之间的一个苹果数,都可以给他(卖的时候是整个盒子卖,不能拆盒子的包装)。  

[z]动机

[z]动机

动机指的是:引导并激发人类行为的一种激励。所以,为什么人们要玩游戏,是什么使他们不停地玩?人们常说,好的游戏是有趣的、具有挑战性的,而且使人愉悦的。因此,我们可以认为下面这些就是玩游戏的动机:体验趣味、挑战,以及愉悦。但是,又是什么原因驱使人们追求这三个因素呢?可以将人的动机划分为三大类:生理的、认知的,以及社会的(Wagner 1999, 4)。玩游戏的动机可被认为位于认知和社会大类之间,这是因为:玩游戏并不满足某种生理需要,如饥渴等。人们因为兴奋激动(好奇动机)、成功(成就感动机),以及与他人交互(社会参与动机)而去玩各种游戏。其中多人游戏提供了另一种社会动机要素:交互、抗争,以及尊重。。初看起来,“好奇”是一种简单动机:就是为了避免厌倦。然而,好奇却相关于为每个行动寻求最佳级别的激励。激励的级别可能太低,也可能太高。只要某个游戏能提供某些新东西,它就能不断地激发好奇心。当某个游戏被探索殆尽后,它就不再能提高玩家的激励级别,继续玩这个游戏就会产生厌烦。如果这种激励的级别太高,它将导致焦虑、愤怒、神经质、或不安,而这些心理状态就会影响其表现。在某个游戏的挑战性和使人灰心或厌烦之间寻求平衡是对游戏开发者的严峻挑战之一。下列可用性指南能帮助设计者最小化不必要的激励,从而使游戏本身能提供这种挑战。“成就感动机”(推进、成功)及“抗争” 紧密关联。某种单一的成功感觉经常产生于与别人的抗争之中,此外,当为超越自己先前的分值而激烈抗争时也可获得某种竞争性的社会参与感觉。高分表的普遍性就揭示了与玩游戏相关的成就感和抗争性是多么得显而易见。游戏是快速获得成就感的一种优秀渠道,这在真实生活中并不多见。学习、工作,以及锻炼等也许会提供一些高度成就感,但前提是:需要很大的投入。成就感和抗争可被视为激励人们去开始并沉湎于游戏的动机。各种游戏都通过使替身获得尊重、爱,或者权力等来实现“社会参与动机”。当玩家真正沉浸到游戏之中时,他会感受到这些。多人游戏将一些社会参与概念注入到游戏过程中。人就是这样一类社会动物:有时,仅仅因为出现在他人面前就成为一种回报。与别人交流使他感觉到自己属于某一个群体,并得到了他人的尊重。合作与抗争是 一个问题的两个方面。作为某个群体的一员,他需要友好合作,但同时,为了在这个群体中的地位他又需要不停地抗争。与真人对玩意味着:可能危及其权利和尊严。好奇心、成就感,以及社会性是如此广泛的动机,以至可以用多种不同的方式去应对。Garneau(2001)在Gamasutra 上发表了《愉悦的十四种形式》一文。其中都是一些既优秀又具体的范例,涉及如何让游戏去应对上面所提到的各种动机。在表1 中,这14 种愉悦形式按其所对应的动机被分类。可以通过提供各种各样的游戏设置来探索并激发用户卷入该游戏的激情,从而提高某个玩家的激励级别。当玩家看到自己努力的成果时,他当然会获得一种成就感。社会性可以是虚拟(爱,权利等)的,也可以是实际的,通过多人游戏模式(抗争、社会交互)来实现。   好奇心      成就感              社会参与感漂亮       |  求解智力问题      |抗争发现       |     创造             |权利沉湎       |  推进和完成        |社会交互戏剧性     | 某种能力的应用   |爱危险性激情|身体动作   |表1:Garneau 根据不同动机分类的14 种愉悦形式

lua 学习笔记11

lua 学习笔记11

/*********************/       I/O 系统/*********************/lua中,I/O分为简单i/o模型和完整i/o模型。 简单i/o模型实际上是完整i/o模型的免文件参数版,它默认了操作的对象是stdin和stdout。 i/o模型可以操作的函数有:readwriteopen另外,还有一个我们常用于调试的print,它实际上是简单i/o模型的一种运用。 print和read的区别:write adds no extra characters to the output, such as tabs or newlines. Moreover, write uses the current output file, whereas print always uses the standard output. Finally, print automatically applies tostring to its arguments, so it can also show tables, functions, and nil. /******************/   I/O 中的open/******************/简单I/O就是open的不是普通的文件,所以它可以直接使用io.read(),io.write()来操作.如果要使用完整的I/O操作,就必须要先open一个文件.它的用法有:io.open("filename","parameter")filename: 文件名parameter: 参数That mode string may contain an `r′ for reading, a `w′ for writing (which also erases any previous content of the file), or an `a′ for appending,…

Read More Read More

lua 学习笔记10

lua 学习笔记10

/********************/ 调用数学库第一个例子/********************/  — 产生10个随机的1-10之间不重复的数  randTen = {}  for i=1,10 do randTen[i] = i end  function getARand()    for nowNumber=10,1,-1 do  local curIdx = math.random(1,nowNumber)  print(randTen[curIdx])  for next = curIdx,nowNumber – 1 do      randTen[next] = randTen[next + 1]        end    end end  getARand()   –[[ output:29110758436 ps:  不知道为什么,加上math.randomseed(os.time())后,反而出现随机数单一的情况 –]] 稍微修改下,成为任意数的版本 function getARand(randTen,max)    if(max == 0) then return end     local curIdx = math.random(1,max) print(randTen[curIdx]) for next = curIdx,max – 1 do  randTen[next] = randTen[next + 1]    end        getARand(randTen,max – 1) end  function randDifNumber(max)     local randTen = {}      for i=1,max do                randTen[i] = i     end       getARand(randTen ,max) end  randDifNumber(100)

[原]symbian C++搭建环境之carbide C++,vc6,vs2003篇

[原]symbian C++搭建环境之carbide C++,vc6,vs2003篇

不得不说的话:   搭建整个环境对于初学者来说的确是复杂的,希望通过本文,让不明白的人能够快速入门。      在正式开始之前,需要知道:      1、我们搭建的是nokia平台下的开发环境,uiq的平台下的我还没有测试过,原理应该类似。      2、为了简单起见,我们以搭建s60的环境为例,其它的nokia平台与此类似。      3、我们需要了解一下nokia提供的平台sdk根据IDE有所区别,下面是引用最新资料(2006.9.22)          a、IDE: Carbide.c++ 下需要支持如下的sdk               * SDK for 3rd Edition               * SDK for 2nd Edition, FP 3 (FP = feature pack)               * SDK for 2nd Edition, FP 2               * SDK for 2nd Edition, FP 1               * SDK for 2nd Edition           b、IDE: CodeWarrior                * SDK for 3rd Edition               * SDK for 3rd Edition – Japanese               * SDK for 2nd Edition, FP 3 (FP = feature pack)               * SDK for 2nd Edition, FP 2               *…

Read More Read More

lua 学习笔记9

lua 学习笔记9

/******************************/    面向对象基础–生成实例/******************************/在lua中,理所当然是利用table来实现oo的。 先看看以前的用法,如果用table来实现一个函数,函数里面要操作表格的一些数据。    Account = {balance = 0}    function Account.withdraw (v)      Account.balance = Account.balance – v    end 这里,总是要引用"Account."才能访问到内部的变量,如果把它当成一个类,这样做就没有办法生成对象,失去了oo的原则,那么,怎么做呢? 第一种方法是在函数里面加上一个参数,这个参数指向当前的表格,那么访问时就灵活多了。例如:    funciton Account.p(tableName , v)      tableName.balance = tableName.balance – v    end 第二种方法跟第一种一样,不过利用lua中内置的colon operator(实际上只是把类名这个参数省略掉了),例如:    function Account:withdraw (v)      self.balance = self.balance – v    end当调用时,直接使用"实例名:widthdraw(v)"就可以自动把当前的实例名当作参数传导函数里面的self里。需要注意的是,在这样的函数里,只能使用Account和self指向隐藏的参数类名 下面我写了一个例子,试试看生成一个实例的用法:classTest={}classTest.number = 1function classTest:addThenPrint(value) self.number = self.number + value print(self.number)end function getAClass(o) o= o or {} setmetatable(o,classTest) classTest.__index=classTest return oend t = getAClass({number = 10})t:addThenPrint(1)            t1 = getAClass({number = 20})t1:addThenPrint(1) print(t.number)print(t1.number) –[[ output:11211121–]]更进一步,可以把上面的程序改成:function classTest:getInstance(o) if(o == nil) then o = {} end if(type(o) ~= "table") then error("error…

Read More Read More

lua 学习笔记8

lua 学习笔记8

/**************/    只读表/**************/利用metaMetods我们还可以做到只读的表格.用前面的方法来实现效率上不是很高,所以,现在改成__index直接指向只读表格的内容,而修改__newindex为调用error信息.( 记住: 前面说过了,__index指向表格时,系统会自动查找表格中的key相等的元素,并返回) 下面是实现方法   — 此函数参数,是一个只读表格   function readOnly (t)      local proxy = {}      local mt = {       — create metatable        __index = t,        __newindex = function (t,k,v)          error("attempt to update a read-only table", 2)        end      }      setmetatable(proxy, mt)      return proxy    end 用法例如:     days = readOnly{"Sunday", "Monday", "Tuesday", "Wednesday",             "Thursday", "Friday", "Saturday"}        print(days[1])     –> Sunday    days[2] = "Noday"    stdin:1: attempt to update a read-only table /*****************/    设置环境/*****************/    Lua keeps all its global variables in a regular table, called…

Read More Read More

[z]游戏频道EA副总裁加德纳:七大预言揭示全球游戏业趋势

[z]游戏频道EA副总裁加德纳:七大预言揭示全球游戏业趋势

 在最近举行的英国爱丁堡互动娱乐节上,电子艺界公司(EA)副总裁兼首席运营官戴维·加德纳公布了全球游戏产业的七大预言。加德纳认为,吸引更多女性玩家、帮助用户亲自创作游戏内容等,将成为全球游戏开发商今后的努力方向。   女性游戏针对女性玩家的电子游戏将成为游戏产业的又一“金矿”,女性游戏市场每年能给单个游戏开发商带来10多亿美元销售收入。   游戏内置广告Yankee Group一份针对美国市场的报告预测,未来几年,游戏内置广告业务将迅猛发展,这一市场在2010年有可能达到10亿美元,而去年这一数字仅为2亿美元。据介绍,游戏内置广告不会脱离游戏场景和情节,因此不会影响用户的体验效果。   多种任务形态对游戏开发商而言,最难把握的就是那些不太痴迷于游戏的玩家。为了吸引这部分人群,开发商必须开发出更具灵活性的游戏。加德纳指出,其中一个办法就是缩短游戏玩家获得成就感的时间,而推出多种任务形态的游戏就是一个不错的选择。   用户自己创作游戏内容开发商将更多地鼓励用户亲自创作游戏内容。虽然YouTube和MySpace等视频分享网站已营造了这样的开放环境,但游戏产业可提供更完善的服务。比如,把用户创作的内容补充到相关游戏中,而且给予用户一定的经济奖励。   吸纳人才其他媒体的写手和艺术家会对游戏产业产生更大影响。   立法加德纳预测,未来将会有更多针对游戏产业的法律出台。不过,游戏开发商有义务向消费者及其父母作出解释,以消除各种误会。   英国将领航游戏产业 英国将在未来游戏产业中扮演领导地位。加德纳说,《古墓丽影》系列游戏和《侠盗飞车》证明了英国游戏公司的开发实力。