12图玩游戏电脑突然死机不能重启这样然后死机重启的,是dmark跑分的时候这样然后重启加了gtx680 显卡就这样

小站会根据您的关注,为您发现更多,
看到喜欢的小站就马上关注吧!
下一站,你会遇见谁的梦想?
暗黑破坏神3官网70%解锁:完成了,真的!
PSV官方SDK文档 Programming Guide - Framework of Programs
1. Framework of Programs
Using the creation of a simple 2D shooting game, this document explains the basic mechanisms of a game application and the development methods with PS Suite SDK.
Smallest PS Suite Program
Basic Framework of PS Suite Applications
Process Flow
Double Buffer
Term Definitions
Note that this document is written with the following people in mind.
Target Readers
Those developing a game application for the first time.
Those who possess understanding of basic C# specifications.
Smallest PS Suite Program
First, try executing the smallest PS Suite program.
Start up PS Suite Studio and open "Sample/Tutorial" folder with File -& Open.. .
Sample/Tutorial folder is installed in the following place by default.
Windows XP: "C:/Documents and Settings/All Users/Documents/Pss/"
Windows 7 : "C:/Users/Public/Documents/Pss/"
sample/Tutorial/Sample01
The files with the sln extension are called solution files. They describe the structures of project files.
The files with the csproj extension are called project files. They describe the structures of source code (cs files) and the building method.
The content of the Sample01 folder for constructing applications is called a "Project".
Note: Please be aware that "Project File csproj" and "Project" have different meanings.
Structure Relationship Between Solution Files and Project Files
A solution file is the startin open this file when starting development of an application.
Once the solution file is open, build and press the F5 key to execute.
Congratulations! However, only a black screen will show for this program, nothing else will happen. Click the x button in the upper right of the window or press Shift+F5 in PS Suite Studio to exit the program.
Basic Framework of PS Suite Applications
First, look at the source code. To look at the source code, double click on AppMain.cs in "Solution Explorer" on the left side.
public class AppMain{
static protected GraphicsContext graphics;
public static void Main (string[] args)
Initialize ();
while (true) {
SystemEvents.CheckEvents();
Update ();
Render ();
public static void Initialize ()
graphics = new GraphicsContext();
public static void Update ()
public static void Render ()
graphics.Clear();
graphics.SwapBuffers();
Here, note Main(), Initialize(), SystemEvents.CheckEvents(), Update(), Render(), and SwapBuffers().
A program starts with Main(). Any application will always require one Main() function. If there are two or more, a build error will occur.
Initialize()
The content of Initialize() mainly describes the initialization processing. This processing is performed only once during startup in this program framework.
Next, a loop is entered with "while". In other words, the SystemEvents.CheckEvents(), Update(), and Render() processing is repeated inside.
SystemEvents.CheckEvents()
The OS dependent events will be checked with SystemEvents.CheckEvents(). An Android device, for example, will detect an event here where an application is minimized, etc. Window message processing, etc in Windows will be detected here.
The calculation processing, etc. handled by the CPU is mainly described in Update().
The render processing and calculation processing, etc. handled by the GPU is mainly described in Render(). In Render(), the frame buffers are first cleared with graphics.Clear().
SwapBuffers()
The frame buffers will be switched with the vertical synchronization timing using SwapBuffers().
"The frame buffers will be switched with the vertical synchronization timing" (described above) will be further explained here.
To make it easier to understand how the program operates, we will change the program as follows.& -sections added.
public class AppMain{
static protected GraphicsContext graphics;
static int colorValue=0;
//&- here.
public static void Main (string[] args)
Initialize ();
while (true) {
SystemEvents.CheckEvents ();
Update ();
Render ();
public static void Initialize ()
graphics = new GraphicsContext();
public static void Update ()
colorValue++;
//&- here.
if(colorValue&255)
//&- here.
colorValue=0;
//&- here.
graphics.SetClearColor(colorValue, colorValue, colorValue, 255);//&- here.
public static void Render ()
graphics.Clear();
graphics.SwapBuffers();
When this program is executed, the screen background color becomes more and more white, then switches to black again.
graphics.SetClearColor(int r, int g, int b, int a) clears the screen with the colors passed in the argument.
r=255, g=255, b=255 is white.
"a" is called alpha and indicates the transparency level. 0 is completely transparent, and 255 is completely opaque.
So you can see that colorValue++; is processed over and over again.
On the PC Simulator, this value is updated 60 times a second, in other words it is updated once every 16.6 milliseconds.
Process Flow
Double Buffer
The following diagram illustrates the process flow.
The area for the video memory shown in the display is called a frame buffer.
In general, game applications have two image areas that are shown on the screen. This is called a double buffer.
The rendering flow uses the following procedure.
First the back area (back) will be cleared with r=1, g=1, b=1 (the preceding diagram has been adjusted to white to be easily understandable).
It waits for 16 milliseconds after rendering completes.
When 16 milliseconds have elapsed, the area cleared with r=1, g=1, b=1 is moved to the front (front).
Now, the area in the back will be cleared with r=2, g=2, b=2.
It waits for 16 milliseconds after rendering completes.
When 16 milliseconds have elapsed, the area cleared with r=2, g=2, b=2 is moved to the front (front).
The program runs while this processing repeats.
Switching areas and showing avoids a scrambled screen in the middle of rendering.
Matching the timing of the screen switch to when the display is refreshed is called "Waiting for (matching) vertical synchronization of the screen".
Because the timing at which the display is refreshed is approximately 16.6 milliseconds (Note 1), the timing at which the frame buffer is switched is matched to this value.
The location for this series of processing is SwapBuffers().
The single panel while waiting for SwapBuffers() to switch the screen is called 1 frame.
"fps" (Frames Per Second) is used as a unit for indicating the number of times that the frame is refreshed in a second. When the frame is refreshed 60 times a second, it is written as 60fps.
(Note 1) Note that on some Android devices, the rate is not 60fps.
Term Definitions
Since similar terms have appeared, we will explain the terms in order to avoid confusion.
"Display" refers to a hardware display device.
"Screen" refers to a software screen.
"Frame buffer" refers to the area for the screen allocated on video memory.
The processing and terms explained in this chapter will also appear in the following chapters, so be sure to remember them.
C#基础教程 (下)
C#基础(六)(枚举,数组,命名空间)一、枚举。枚举是用户定义的整数类型。在声明一个枚举类型时,需要指定该枚举可以包含的一组可以接受的实 例值。我们看个示例。using Susing System.W.cn{class MyFirstClass{static void Main(){int userAage=(int)user.fatherAConsole.WriteLine(userAage);}public enum user{Age=18, //年龄gread=2, //年级fatherAge=65 //父亲的年龄}}}在示例中, 会输出65. public enum user 就是声明了一个 user 的枚举类型。Age,gread,fatherAge 就是它的三个选项。分别赋有三个特定的值。intuserAage=(int)user.fatherA 这是定义了一个 userAage 并且给其赋值为 user.fatherAge,也就是65.我们再来看个小示例static void Main(){user userTemp=user.Console.WriteLine(userTemp.ToString());}在这里示例中,输出的是gread 字符串。为什么呢?因为枚举在后台会实例化为派生于System.Enum 的结构,这表示可以对其进行调用方法,执行一些操作。上面的例子就是一个说明。二、数组。我们先来声明一个整型数组。int [] userCint [] 这就表示了一个整型数组,userCount 是数组名称。我们再看一种声明方式: int [] userCount=new int [20];这个例子声明了一个大小为20 的整型数组。注意,所有的数组都是引用类型。数组,我们就在这里简单的介绍这么一点,在后面我们和集合一起详细的学习数组。三、命名空间。我们先来看个示例using S.cn{public class MyFirstClass{public string getUrl(){return ".cn";}static void Main(){
urlClassNew=new
();string url=urlClassNew.getUrl();MyFirstClass MyFirstClassNew =new MyFirstClass();string url2=MyFirstClassNew.getUrl();Console.WriteLine(url);Console.WriteLine(url2);}}}namespace
{public class MyFirstClass{public string getUrl(){return ".cn";}}}在这个示例中,有两个namespace 。 注意,两个namespace 中的类名称是一样的,而且都有个 getUrl() 方法。但在第一个 类的Main()方法中,我们调用这两个方法的时候,并没有报错,正是因为两 个类分别位于两个不同的命名空间中,从而避免了类名的冲突问题。最后输出的结果是
和.cn在这个例子中,gosoa.MyFirstClass urlClassNew=new gosoa.MyFirstClass(); 是用来实例化一个gosoa.MyFirstClass 这个类的。我们要访问类,就需要使用 命名空间+&.&+类名 这样的方 式访问。如果命名空间名称很长,就会很显得冗长,于是,我们可以采用using 语句简化。我们看到,在每个类前面第一句总是 using S 这是因为所有的c#的许多类都包含在System 命名空间中。我们也可以给命名空间起个别名。比如,在上个例子中,我们可以使用using gosoa=.cn ; 这样来引入 命名空间。C#高级(一)面向对象对于面向对象,有N 多大师写过N 多文字。我也不敢妄言。就简单说说自己的认识。我们先来看看&对象&,什么是对象?我们在现实生活中所能看到的一切都可以称为对象 。比如,企业、医院、宠物、植物、人。。。等等。在面向对象编程中,对象往往被当作一个类,类有属 性和行为。我们以医院为例来说,医院有医生,有护士等,在医院可以做CT,B 超等。在面向对象编程中 ,我们定义一个hospital 类,其有属性(医生,护士)和行为(做CT,做B 超)。这就是一个简单的面向 对象编程。其实,我们不光可以把医院做为一个类,我们还可以把医生做为一个类,医生有其属性(年龄,姓名 ,性别等)和其行为(检查病人,开处方,做手术等)。甚至我们可以把儿科医生定义为一个类,同样, 骨科,外科,内科等医生,我们都可以分别定义为一个类,但这些类都具有同样的属性(年龄,姓名,性 别等)甚至行为,难道每个类我们都要依次定义这些属性吗?答案是否定的。我们可以定义一个医生类,定义这些共有属性和行为。儿科医生,骨科医生等都继承自这个医生类, 这样就具有了医生类的所有属性和行为。这在面向对象编程中被称为继承。我们再来看一个例子。人,有白人,黑人,黄种人等。人有年龄,性别,会吃饭。狗有白毛的狗,有黑色的狗等,狗有年龄 ,性别,会吃饭,咬人。在这种情况下,我们可以把人定义为一个基类(有属性 年龄,性别和行为吃饭等),黑人,白人,黄 种人都继承自&人&这个类。我们再&狗&定义为一个类(有属性 年龄,性别和行为吃饭,咬人等),白狗,黑狗都继承于这个&狗&类。在这里,我们可以看到,狗所具有的一些属性在&人&这个类里面已经具有了,我们没有 必要重新在&狗&类中定义的,&狗&类中只需要定义其独特的行为或属性,比如 :咬人。而黑狗,白狗等继承自&人&和&狗&这两个类。这样就不存在重复定义 的问题了。但在C#和Java 中都不支持多重继承。那怎么办呢?这时候就诞生了一个&接口&的概念。一个类可以实现多个接口。在上例中,可以定义一个&动物&的接口(人也是一种动物嘛),在接口中定义人和狗共有的年龄,性别,吃饭等属性和行为。再定义一个&人&这样的基类,并实现这个接口,然后白人,黑人等类再继承&人&这个基类就可以了。狗也同理。呵呵。就简单的介绍这么些吧。可能说的不清楚,大家去google 一下,有很多介绍面向对象的文字。C#高级(二)类一、类的概述类,是创建对象的模板,每个对象都包含数据,并且提供了处理和访问数据的方法。换言之,类,定 义了每个对象,也就是&实例&包含什么数据和功能。比如我们定义一个&医生&类,并且实例化一个。我们看下面的代码:using S.cn{public class Doctor{public Doctor(){}public Doctor(string name,byte age){this._name=this._age=}private string _private byte _public string Name{get{return this._}set{this._name=}}public byte Age{get{return this._}set{this._age= }}public string doSth(){return "我会给人治病喔~~";}public static string doAnth(){return "执行的另一个静态方法";}}public class OneDoctor{static void Main(){Doctor dc=new Doctor();dc.Name="李四";dc.Age=25;Doctor dc2=new Doctor("张三",35);Console.WriteLine(dc.Name);Console.WriteLine(dc.Age);Console.WriteLine(dc2.Name);Console.WriteLine(dc2.Age);Console.WriteLine(dc.doSth());Console.WriteLine(Doctor.doAnth());}}}在这个例子中,public class Doctor 便是声明了一个类。_name 和_age 是其两个属性。doSth()是其 的一个方法(即对象的行为)。 Doctor dc=new Doctor() 用来实例化了一个Doctor 类,也就类似实例化 了一个对象,产生了一个新医生。Doctor dc2=new Doctor("张三",35);是实例化的另外一个类,也就是 另外一个医生。在Doctor 类中,public Doctor(){} public Doctor(string name,byte age) 这两个方法叫做 构造函数。是用来初始化类的,在每个类被实例化的时候,会自动调用。public string Name{get{return this._}set{this._name=}}这段代码是用来设置和获取类的属性的。也就类似java 中的 getName 和 setName 方法。只是在C#中 这变得更容易了。注意一点:类是存储在托管堆上的引用类型。二、方法1、 方法概述方法和C 语言中的 函数共享同一个理念。一直以来,我们在用的Main()方法就是个例子。还有上例中 public string doSth() 也是一个方法。其中,public 是 类的修饰符,string 是方法的返回值,也可以 没有返回值,即 void ,doSth 是方法名称。()括号必须有,在括号中可以有参数,如Doctor 类的构造函 数 public Doctor(string name,byte age) 就有两个参数。方法体则必须用一对{}括起来。方法的调用,则需要先实例化类,然后调用类的某个方法。上例中Doctor dc=new Doctor();来实例化 了类,然后 dc.doSth() 就是调用了Doctor 类的方法。如果方法是静态的,即 static,则不需要实例化类,直接使用 类名.方法名 就可以调用了。如上例 中 Console.WriteLine(Doctor.doAnth()); 即是直接调用了静态的doAnth 方法。2、方法的参数参数可以通过引用或者值传递 给方法。具体有什么区别呢?我们来看个例子。using S.cn{public class OneDoctor{static void FunctionTest(int [] arr, int x){arr[0]=100;x=10;}static void Main(){int [] arrTemp={0,1,2,3,4};int y=30;Console.WriteLine(arrTemp[0]);Console.WriteLine(y);FunctionTest(arrTemp, y);Console.WriteLine(arrTemp[0]);Console.WriteLine(y);}}}本例的输出结果是0,30,100,30 因为数组是引用类型,在调用方法前后,引用类型的修改会保留下 来,而值类型的修改不会保留下来。3、ref 参数。我们把 上例中的方法修改为 static void FunctionTest(int [] arr, ref int x) 这样,调用的时 候也加上 ref 即:functionTest(arrTemp, ref y); 执行后的结果就是0,30,100,10。ref 关键字是强迫参数通过引用传递。注意:在调用有ref 参数的方法时,必须将参数要传递的参数提前初始化。但在调用out 参数的方法时 ,就不必提前初始化。4、out 参数在上例中,我们稍作修改。static void FunctionTest(out int x){x=100;}static void Main(){FunctionTest(out y);Console.WriteLine(y);}在Maim()函数中调用FunctionTest 之前,y 并没有初始化。但其输出结果确实100;因为这样属于引用 传递,值的修改会被保留下来。5、方法的重载所谓重载就是指 方法名相同,而参数不同(参数类型,参数个数)看下面一个例子using S.cn{public class test{static int FunctionTest(int x){return x+100;}static string FunctionTest(string str){}static int FunctionTest(int x,int y){return x+y;}static void Main(){Console.WriteLine(FunctionTest(10) );Console.WriteLine(FunctionTest(".cn") );Console.WriteLine(FunctionTest(5,20));}}}在这里例子中,有三个方法functionTest 其参数都不一样。在调用的时候,系统会根据传递的参数自 动选择调用哪个方法的。这就是方法的重载。在这里注意,重载的条件是,必须参数类型不同,或者参数个数不同。C#高级(三)构造函数构造函数是和类名相同的类的一个方法,如果没有显式的声明,在系统会在编译的时候,自动生成一 个不带参数的,不执行任何动作的构造函数。但如果显式的声明了构造函数,系统就不会自动生成了。如果声明的构造函数是有参数的构造函数, 我们在实例化类的时候,就必须以该构造函数而实例化类。看下面的代码:using S.cn{public class test{public test (int i){this.num=i+5;}static void Main(){test classOne=new test(10);int x=classOne.Console.WriteLine(x);}}}如上代码,在实例化类的时候,test classOne=new test(10); 传递了一个参数。如果我们testclassOne=new test();这样来实例化类,就会报错了。因为我们显式的声明了一个带参的构造方法,new test() 这样实例化的时候,调用的是无参的构造函数,但类中却没有无参的构造函数。我们再来看一下静态构造函数。在C# 中我们可以给类定义一个无参的静态构造函数(注意,必须是无参的),只要创建类的对象,该 方法就会执行。该函数只执行一次,并且在代码引用类之前执行。一般,在类中有一些静态字段或者属性,需要在第一次使用类之前从外部数据源初始化这些静态字段 和属性,这时,我们就采用静态构造函数的方式来解决。静态构造函数没有访问修饰符,其他C#代码也不调用它,在加载类时,总是由.NET 运行库调用它。一 个类只能有一个静态构造函数。注意,无参的实例构造函数可以和静态构造函数在类中共存。因为静态构造函数是在加载类的时候执 行的,而实例构造函数是在创建实例时执行的,两者并不冲突。我们看下面的例子using S.cn{public class test{static test(){Console.WriteLine(".cn");}public test (){}static void Main(){test classOne=new test();}}}该程序运行的结果是
在类的对象创建的时候,静态构造函数已经运行了。我们再来看一个例子using S.cn{public class test{ppublic test (string dom,string url){this.domain=this.url=}public test(string dom){this.domain=this.url=".cn";}static void Main(){test classOne=new test("gosoa");Console.WriteLine(classOne.url);}}}在上例中,有两个构造函数,有可能两个构造函数需要初始化同一个字段,这种情况,C#中有个特殊 的语言,称为&构造函数初始化器&可以实现。看下面代码using S.cn{public class test{ppublic test (string dom,string url){this.domain=this.url=}public test(string dom) : this (dom,".cn"){}static void Main(){test classOne=new test("gosoa");Console.WriteLine(classOne.url);}}}如上实例,就是采用了 构造函数初始化器。注意,构造函数初始化器在构造函数之前执行。2、只读字段(readonly)。只读字段比常量灵活的多,常量(const)字段必须在声明之初就初始化,但readonly 字段甚至可以进行 一些运算再确定其值。注意,可以在构造函数中对只读字段赋值,但不能在其他地方赋值。C#高级(四)结构,部分类和Object 类一、结构结构和类几乎一样,在定义的时候只需要把class 写成 struct 。为结构定义函数和为类定义函数完全 一样。那什么时候用结构呢?在一些时候,我们仅需要一个小的数据结构。如果用类的话性能是有损失的, 而采用结构就比较合适。注意,结构是值类型,而类是引用类型;结构不支持继承;结构在编译时,编译器总会提供一个无参 的构造函数;在结构中不允许定义无参的构造函数。二、部分类有时候,可能多个人在访问同一个类,我们可能把同一个类,接口或者结构放在不同的文件中,只需 要在类 接口 结构前面加上 partial 关键字。比如下面两段不同的源码分别位于不同的文件中,当编译的时候,系统会自动创建一个testOne 类,合 并两个文件中的方法。partial class testOne{public void MethodOne(){}}partial class testOne{public void MethodTwo(){}}三、Object 类。所有的.NET 类都派生于System.Object。既然都派生自System.Object,这样其一些特定的方法我们就可以直接使用。比如最常简的ToString() 方法,是获取对象的字符串表示的一种便捷方式。C#高级(五)继承,派生类,派生类的构造方法一、基本概念首先我们来了解两个基本概念:实现继承和接口继承(1)、实现继承,表示一个类派生于一个基类型,并拥有该基类型的所有成员字段和函数。(2)、接口继承,表示一个类型只继承了函数的签名,没有任何实现的代码。在需要指定该类型具有某些可用的特性时,最好使用这种继承。注意,在C#中,不支持多重继承,但一个类却可以实现多个接口。同样,结构总是派生于System.ValueType , 他们还可以派生于任意多个接口。二、实现继承。(1)、我们先来看个例子。using S.cn{public class baseClass{ public string getUrl(){return ".cn";}}public class test : baseClass{static void Main(){test classOne=new test();Console.WriteLine(classOne.getUrl());}}}在上面的例子中,public class test : baseClass 就是声明了类test 继承自baseClass。这样,在类test 中也就具有了父类的方法,getUrl() 。在上例中输出结果是
(2)、虚方法把一个基类中的方法声明为 virtual ,则该函数可以在任何派生类中重写了。在C#中,函数默认下不是虚拟的,需要显式的声明。但在java 中,所有函数都是虚拟的。C#中,派生类的函数重写另一个函数时,要使用override 关键字显式的声明。如果声明了override 函数,但在基类中如果没有可以重写的函数,编译器就会报错了。注意,成员字段和静态函数都不能声明为 virtual ,因为这个概念只对类中的实例函数成员有意义。我们来看个例子。using S.cn{public class baseClass{public virtual string getUrl(){return "";}}public class baseClass2:baseClass{public override string getUrl(){return ".cn";}}public class test : baseClass2{public override string getUrl(){return ".cn";}static void Main(){test classOne=new test();Console.WriteLine(classOne.getUrl());}}}本例的输出结果是
(3)、隐藏方法。在上例中,baseClass2 类的getUrl()方法,如果没有override 关键字,则baseClass2 类的getUrl()方法就会隐藏基类的getUrl()方法。在编译的时候,系统会给予警告。(4)、调用函数的基本版本还是看上一个例子,我们稍作修改,如下,public class test : baseClass2{public override string getUrl(){string url="http://";url+=base.getUrl();}static void Main(){test classOne=new test();Console.WriteLine(classOne.getUrl());}}我们来看url+=base.getUrl();这一句,base 就是调用基类的意思,所以,本例的输出结果是
(5)、抽象类和抽象方法。C#允许把类声明为 abstract ,抽象类不能实例化,抽象方法不没有执行代码。我觉得抽象类和抽象方法没有什么用,一般我们用接口就可以了。搞不太明白C#中这个抽象类和抽象方法到底想用来干什么。(6)、密封类和密封方法。如果把类声明为 sealed 即标明该类不可以被继承,如果是方法,则方法不可以被重写。(7)、派生类的构造方法。在派生类中,构造方法是依次从基类中执行,最后到派生类本身的构造函数。我们来看下面的例子:using S.cn{public class userBase{pripublic userBase(){Console.WriteLine( "I'm good men");}public userBase(string username){this.username=}}public class oneMen : userBase{public oneMen(){Console.WriteLine( "Yes , I'm very good !");}public oneMen(string username):base(username){Console.WriteLine( username +" is a good men!");}public oneMen(string username,string hisWebSite):base(username){Console.WriteLine( username +"'s webSite is "+hisWebSite);}public static void Main(){oneMen classOne=new oneMen();//oneMen classTwo=new oneMen("pan");//oneMen classThree=new oneMen("pan",".cn");}}}我们先声明了一个 userBase 类,其有个私有成员变量,还有两个构造函数。oneMen 类派生自userBase 类。并且oneMen 类有其自己的三个构造函数。public oneMen(stringusername):base(username)这个构造函数继承了基类中的构造函数,间接的给基类中的私有字段赋值了。public oneMen(string username,string hisWebSite):base(username) 这个构造函数也继承了基类的构造函数,在Main()函数中我们依次通过三种方式实例化oneMen 类的时候,依次输出的结果是oneMen():I'm good menYes , I'm very good !oneMen("pan"):pan is a good men!oneMen("pan",".cn"):pan&s 's webSite is
希望通过这个例子让大家了解到派生类的构造函数。C#高级(六)接口,接口继承接口我们在前面也已经有所提及。接口的命名传统上都以大写I 开头。我们假设这样一种情况,一个系统有很多用户,我们可以查询某个用户是否存在,并且可以修改用户 的密码。但有可能某天我们的数据库从mysql 升级成为 sqlserver 。在这种情况下,我们看下面一个例 子。using S.cn{public interface IUserOperation{bool userExites(string username);bool updateUserPwd(string newPwd,string oldPwd);}public class SqlUserOperation: IUserOperation{//这里我们假使 uname oldPwd 是通过sql 在数据库中查到的。具体查询,这里就不说了。string uname="pan";public string oldPwd=".cn";public bool userExites(string username){if(username==uname){}Else{}}public bool updateUserPwd(string newPwd,string oldPwd){if(newPwd==oldPwd){}Else{}}}public class MainClass{static void Main(string [] args){string newPwd =Console.ReadLine();string username =Console.ReadLine();SqlUserOperation one=new SqlUserOperation();IUserOperation tow=new SqlUserOperation();if(tow.userExites(username)){Console.WriteLine("用户存在");}else{Console.WriteLine("用户不存在");}if(tow.updateUserPwd(newPwd,one.oldPwd)){Console.WriteLine("密码修改成功");}else{Console.WriteLine("密码修改失败");}}}/* //我们可能某天需要用mysql 数据库了。这时候的具体实现又有所不同了。public class MysqlUserOperation: IUserOperation { }*/}注意,实现接口的类,必须实现类的全部成员。否则会报错喔。我们来看这一句IUserOperation tow=new SqlUserOperation(); 该句把引用变量声明为IUserOperation 的引用方式,这表示,他们可以指向实现这个接口的任何类的实例。同时,接口也可以彼此继承,但要注意,实现接口的类必须实现接口以及接口的父接口的所有方法。C#高级(七)类型强制转换,拆箱,装箱一、装箱和拆箱装箱就是 将值类型转换为引用类型。拆箱就是 将引用类型转换为值类型。比如我们非常常用的 .ToString() 方法,就是典型的一个装箱的过程。再如下面的例子int i=10;object y=(object) //这就是装箱int x=(int)y; //这是拆箱。二、对象的相等比较在C#中,有四种比较相等的方法。1、ReferenceEquals() 该方法是一个静态方法,用来判断两个引用是否指向同一个实例。也就是是否 指向同一个内存地址,如果是,则返回true ,否则返回 false。2、虚拟的 Equals() 方法。因为是虚拟的方法,所以可以重写。这样它既可以用来比较对象,也可以 比较值。3、静态的 Equals() 方法,这与虚拟的Equals()方法作用相同,只是带有两个参数,并对其进行比较 。这个方法可以处理两个对象中有一个是null 的情况,当有一个是null 的时候,就会抛出异常。4、比较运算符 == 我们最好把这种比较看做是严格值比较和严格引用比较之间的中间选项。但注意 ,通过这样的方式比较字符串的时候,而不是引用。C#高级(八)委托一、委托当我们需要把方法做为参数传递给其他方法的时候,就需要使用委托。因为有时候,我们要操作的对象,不是针对数据进行的,而是针对某个方法进行的操作。我们还是来以代码入手using S.cn{public class test{public delegate string GetAString();public static void Main(){int x=10;GetAString firstString=new GetAString(x.ToString);Console.WriteLine(firstString());//上句和下面这句类似。//Console.WriteLine(x.ToString());}}}在上例中,public delegate string GetAString(); 就是声明了一个委托(delegate),其语法和方法的定义类似,只是没有方法体,前面要加上关键字 delegate 。定义一个委托,基本上是定义一个新类, 所以,可以在任何定义类的地方,定义委托。注意,在C#中,委托总是自带一个有参数的构造函数,这就是为什么在上例中,GetAStringfirstString=new GetAString(x.ToString); 通过这句初始化一个新的delegate 的时候,给传递了一个 x.ToString 方法。但,在定义delegate 的时候,却没有定义参数。在看另一个例子之前,我们先来了解下匿名方法。匿名方法的使用,我们看个例子using S.cn{public class test{delegate string GetUrl(string val);static void Main(string [] args){string domin=".cn";GetUrl url=delegate(string param){param="http://"+};Console.WriteLine(url(domin));}}}在本例中,GetUrl url=delegate(string param) 在这里实例化一个delegate 的时候,采用了匿名的 方法。本例输出的结果是
接下来我们再看一个委托的例子。using S.cn{class NumberOpthion{public static double numOne(double x){return x*2;}public static double numTwo(double x){return x*x;}}public class delegateTest{delegate double DoubleOpration(double x);static void printNumber(DoubleOpration dp,double x){double result=dp(x);Console.WriteLine("value is {0}, result of DoubleOpration is {1}:",x,result);}static void Main(){DoubleOpration doption =new DoubleOpration(NumberOpthion.numOne);printNumber(doption,1.5);doption =new DoubleOpration(NumberOpthion. numTwo);printNumber(doption,3.2);}}}首先我们定义了一个NumberOpthion 类。用来对数字进行*2 和2 次方运算。接着,我们定义了一个委托 delegate double DoubleOpration(double x)。下面,我们定义了printNumber(DoubleOpration dp,double x) 这样一个方法,其中一个参数就是委托。最后我们DoubleOpration doption =new DoubleOpration(NumberOpthion.numOne);实例化了一个委托,并调用了 printNumber 方法。最后的输出 结果是Value is 0.5 result of DoubleOpration is 3;Value is 3.2 result of DoubleOpration is 10.24;在上例中,我们如果采用匿名方法,代码就会如下:using S.cn{public class delegateTest{delegate double DoubleOpration(double x);static void printNumber(DoubleOpration dp,double x){double result=dp(x);Console.WriteLine("value is {0}, result of DoubleOpration is {1}:",x,result);}static void Main(){DoubleOpration doptionOne =delegate(double x){return x*2;};DoubleOpration doptionTwo =delegate(double x){return x*x;};printNumber(doptionOne,1.5);printNumber(doptionTwo,3.2);}}}委托,还有一种情况,是多播委托。这个在以后我们应用到的时候,会学习到。C#高级(九)C#数据结构,集合一、集合的基本概念在.NET 中,对于数据结构的支持,即把许多类似的对象组合起来。最简单的数据结构就是数组。集合表示一组可以通过遍历每个元素来访问的的一组对象,特别是可以使用foreach 循环来访问他们。 对象如果可以提供相关对象的引用,就是一个集合。称为使用foreach 循环是集合的主要目的,集合没有提供其他特性。二、数组列表。数组列表类似数组,但数组列表是可以增大的。数组在规定的大小后,就不可以再增加了,但数组列 表可以。比如 ArrayList arrayListTest=new ArraryList(10); 该句创建了一个大小为10 的ArraryList 对象,当我们再为其添加第11 项时,其容量会自动扩大1 倍,也就变成了20,而原来的对象会被添加上垃圾收集 器的标记。为其添加对象的方法是 .Add()比如:arrayListTest.Add(&.cn&);我们来完整的看个例子。using Susing System.C.cn{class Test{static void Main(){ArrayList arrayTest = new ArrayList(4);arrayTest.Add("www.");arrayTest.Add("gosoa.");arrayTest.Add("com.");arrayTest.Add("cn");foreach(string item in arrayTest){Console.Write(item);}Console.WriteLine("\n"+arrayTest.Capacity.ToString());arrayTest.Add("url");Console.WriteLine(arrayTest.Capacity.ToString());}}}
C#基础教程 (上)
C#基础(一)一、C#与.NET 的关系C#本身是一门语言,他是用于生成面向.NET 环境的代码,但其并不是.NET 的一部分。换言之,C#编写 的代码总是运行在.NET Framework 中。而且,在很多时候,C#的特定功能依赖于.NET。比如,在C#中声 明一个int 类型,实际上是.NET 中System.Int32 类的一个实例。
.NET 的核心是CLR(公共语言运行时)。在CLR 中运行的代码,我们成为&托管代码&。我们写的代码在运行之前,会经过两个编译阶段。1、把源代码编译为IL(Microsoft 中间语言)2、CLR 把IL 编译为平台专用的代码。在这里,我们来简单说说&托管代码&。IL 和Java 的字节代码的理念基本是一样的,都是一种低级语言,都用数字表示,可以非常快速度的转 化为机器代码,这样执行效率会高很多,同时这也就是我们经常说的&平台无关性&的实现很 重要的一个环节。VB.NET C# J# 的源码都可以被编译成相同的IL, 也就实现了平台无关。换言之,只 要.NET Framework 可以运行在任何设备或系统上,VB.NET C# J#编写的代码都可以运行,而且都可以运 行在任何设备或者系统上。VB.NET C# J# 的源码都可以被编译成相同的IL,这样不同语言编写的不同类都可以很容易的相互操作 ,也就是所说的,语言的互操作性。似乎这个IL(Microsoft 中间语言)很好很强大,很神很奇特。我们接下来了解下这个IL。首先,简要的说说它的主要特征:A、面向对象和使用接口B、值类型和引用类型之间的巨大差别C、强数据类型D、使用异常来处理错误。E、使用属性(attribute)接下来具体说说这些特征。(一)、面向对象和使用接口面向对象,在此不做多的阐述了。主要在这里说说接口。关于接口,有一个很重要的理念:提供一个 契约,实现给定接口的类,必须提供该接口的所有方法和属性的实现。举个例子说明吧,有个接口IUser ,其有age,sex,userName 属性,有 setUname(),getAge()方法。有个类,UserClass 继承自IUser。这时, UserClass 就必须实现IUser 的所有方法setUname(),getAge()和所有属性 age,sex,userName。(二)、值类型和引用类型的巨大差异。对于值类型,变量直接保存其数据,而对于引用类型,变量仅仅保存数据的地址。值类型一般存储在 堆栈中,引用类型一般存储在托管堆中。(三)、强数据类型所谓强数据类型,是指所有的变量都明确的被标记为某个特定的数据类型。比如string 或者int 等。 IL 不允许对模糊数据类型执行操作。在javascript 中的 var 变量就是模糊类型数据。不过在现在的,.NET 3.5 中也加入了var ,也就是模糊数据类型。(四)、使用异常来处理错误。C#中以 try{} catch{}finally{}代码块来处理。这个具体在后面再谈。(五)、属性的使用。用户定义的Attribute 和其对应的数据类型或方法的元数据放在一起,这对于文档说明很有用,它们和 反射技术一起使用,执行特定的任务。在这里提及到的元数据以及反射,在后面我们将会详细讲述到。C#基础(二)(温故而知新)二、程序集程序集(Assembly)是包涵编译好的,面向.NET Framework 的代码的逻辑单元。程序集是完全自我描 述性的,也是一个逻辑单元。程序集的一个重要特点是其包含的元数据描述了对应代码中定义的类型和方 法。程序集也包含了自身的元数据。程序集也有私有程序集和共享程序集之分。这些在后面我们将会学习到。三。、反射。因为程序集存储了元数据,包括在程序集中定义的所有类型和方法,所以可以编程访问这些元数据。 这种技术就成为反射。这种方法很有趣,我们在后面详细介绍。四、命名空间命名空间是.NET 避免类名冲突的一种方式。在大型开发中,往往都是团队开发,假如A 公司开发了一个 user 类,而B 公司也开发了一个user 类,如果两个类要一起工作,就很可能产生冲突,这时候,命名空间 便能很好的解决问题。A 公司的user 类的命名空间可以命名为 companyA,而B 公司的user 类可以命名为 companyB,这样即使两个类在一起工作也不会产生冲突,在实例化类的时候,我们采用 命名空间.类名 这样的方式来实例化的。即:companyA.user 这样的方式。C#基础(三)(变量的声明,变量的作用域以及常量)从这一节开始,我们开始复习C#基础知识,涉及变量声明,变量的初始化,作用域,C#的预定义数据 类型,C#中的循环和条件语句,枚举,命名空间,Main()方法,C#标识符和关键字,C#编码的规范和约定 ,等等。首先,我们还是从非常经典的&Hello word !&开始。我们新建一个.txt 文件,并且更改为 test.cs 。然后键入以下内容。using S{class MyFirstClass{static void Main(){Console.WriteLine("Hello world !");}}}然后 打开C#命令行编译器,编译这个文件。也就是在C#命令行中输入csc test.cs编译成功后会在存放该文件的目录,生成一个test.exe 文件。我们继续在C#命令行中输入test.exe 就 会运行test.exe 文件,输出 Hello World !(说明:这里的C#命令行在 开始-程序-Microsoft .NET Framework SDK v2.0-SDK 命令提示)在上个例子中,我们简单说明几个该注意的事项,首先,第一句using S 是用来引入System 基 类。和java 的import 相似,这是C#的基类,C#的所有工作都依赖于该基类。第二句
是我们之前提到的命名空间,命名空间为,当然,你可以命名为任意名称。但,为了避免冲突, 我们一般采用自己公司的域名做为命名空间。第三句,class MyFirstClass 是声明一个名称为 MyFirstClass 的类。第四句,static voidMain() 是程序的主方法,注意,这里的Main() 方法首字母大写喔。第五句,Console.WriteLine("Hello world !"); 就是输出Hello world ,Console.WriteLine 就是基类中的一个方法。在C#中,和其他很多语言(C,JAVA 等)一样,句子末尾以分号&;&结束,程序代码都放在{}一对大括号 中。一、变量1.1 变量的声明C#中变量的声明我们以实例来说明,例如, 该句声明了一个 int (整型) 变量 i 。再如, 这句声明了一个string(字符串类型)的变量 str 。1.2 变量初始化C#编译器需要每个变量在有了初始值之后才能使用该变量。在C#变量初始化时有两点需要注意,A 、变量是类或者结构中的字段,如果没有显式的初始化,在默认状态下,创建这些变量时,其初始 值就是0;例如下面的代码:using S{class MyFirstClass{static void Main(){Console.WriteLine(y);}}}我们在类中声明了一个变量y,然后输出该变量,编译并运行后我们会看到输出的结果是0 。B、方法中的变量,必须显式的初始化,否则在使用该变量的时候会出错。如下面的代码:在编译的时 候就会报错。我们需要把 显式的初始化,才会通过编译。比如我们初始化y 的值为10 ,即 int y=10; 便会通过编译。using S{class MyFirstClass{static void Main(){Console.WriteLine(y);}}}1.3 变量的作用域变量的作用域是指可以使用该变量的代码区域。一般情况下,确定作用域有如下规则。A、只要变量所属的类在某个作用域内,其字段(也叫做 成员变量)也在该作用域中。B、局部变量存在于声明该变量的块语句或方法结束的大括号之前的作用域。C、在for、while 循环中声明的变量,只存在于该循环体内。在变量使用中,可能产生命名冲突的情况,首先,我们来看下局部变量的作用域冲突。如下代码示例 :using S{class MyFirstClass{static void Main(){for(int i=0;i&10;i++){Console.WriteLine(i);}for(int i=0;i&20;i++){Console.WriteLine(i);}}}}两个循环中都使用了i ,但都可以正常输出,因为每个i 的作用域都在其对应的两个循环体内。再看下例代码:using S{class MyFirstClass{static void Main(){int j=5;for(int i=0;i&10;i++){int j=20;Console.WriteLine(i+j);}}}}这段代码编译就会出错,因为第一个j 在作用域是整个Main()方法,这样,其在循环体内也是有效的 。于是,在循环体内定义一个同名的j 时,就会报错了。我们再看如下示例代码,using S{class MyFirstClass{int j=30;static void Main(){int j=20;int i=5;Console.WriteLine(i+j);}}}在这段代码中,第一个j 的作用域是整个类,也就是类的字段,第二个j 的声明会替代第一个j,所以该 程序会输出25.1.4 常量在声明变量时,在变量前面加上const 关键字就可以把该变量指定为一个常量。在这里需要注意几点,A 常量必须在声明的时候就初始化,而且其赋值后就不能再更改了。B 常量总是静态(static)的,不必在声明常量时添加static 关键字。C#基础(四)(C#预定义值类型和引用类型)一、预定义类型。1、值类型和引用类型C#中的数据类型,可以分为值类型和引用类型,值类型存储在堆栈上,而引用类型存储在托管堆上。如下代码示例,int i=10;int j=i;i 和j 的值都是10,并且在内存中会有两个地方存储10.再看下面的代码Vector x=new Vector();x.Value=20;Vector y=x;Console.WriteLine(y.Value);y.Value=50;Console.WriteLine(x.Value);Vector 是一个引用类型,引用类型在使用的时候需要new 来实例化一个。这段代码执行后,只有一个 Vector 对象,x,y 都指向包含该对象的内存地址。因为x,y 存储的都是对象的引用,所以当y 改变的时候, x 也会改变。所以该程序输出的结果是20 和50.如果变量是一个引用,就可以把其值设置为null,表示不指向任何对象。2、CTS 类型。C#的预定义类型并没有内置于语言中,而是内置于.NET Framework 中,比如声明一个int 类型时,实际 上是.NET 结构System.Int32 的一个实例。这说明,可以把所有的基本数据类型看作是支持某些方法的类。\3、预定义的值类型A、整型sbyte ,8 位有符号的整数,范围从 -128 到127.byte ,8 位无符号的整数,范围从 0 到255.short,16 位有符号的整数,范围从 -32768 到32767ushort ,16 位无符号的整数,范围从0 到65535int,32 位有符号的整数,范围从- 到uint,32 位无符号的整数,范围从0 到long,64 位有符号的整数,范围从-2 的31 次方到2 的31 次方减1ulong,64 位无符号的整数,范围从0 到2 的64 次方减1B、浮点类型。float ,32 位单精度浮点数。double,64 位双精度浮点数。如果代码对某个非整数值,如12.3 硬编码,则编译器一般假定该变量是double,如果想指定其为float ,则可以在后面加上字符f。C、decimal 类型。该类型是一种财务专用数据类型,是128 位高精度十进制表示法。要把数据指定为decimal 类型的,只需在数字后面加上M(或者m)A、 bool 类型。C#的bool 类型包含true 和false。B、 字符类型。也就是char 类型,表示一个16 位的unicode 字符。char 类型的字面量是采用 单引号 括起来的。而不是双引号。双引号括起来的是字符串类型的。4、预定义引用类型。A、object 类型。这是C#的基类,所有的类都派生自它。所以,可以使用object 引用绑定任何子类型的对象,object 类 型执行许多基本的一般用途的方法,如 Equals() GetHashCode(),GetType()等,我们需要针对某些方法 进行&重写&,这在后面我们将会学习到。B、string 类型。注意,string 类型是属于引用类型。我们来看下面一段代码,在修改一个字符串的时候,实际上是创 建了一个新的字符串,而并非修改了原来在字符串。我们来看一个示例:using Susing System.W{class MyFirstClass{static void Main(){string str1=".cn";string str2=str1;Console.WriteLine("str1="+str1);Console.WriteLine("str2="+str2);str1=".cn";Console.WriteLine("str1="+str1);Console.WriteLine("str2="+str2);}}}在这个示例中会输出str1=".cn";str2=".cn";str1=".cn";str2=".cn";这和我们所预期的引用类型正好相反,为什么呢?因为当我们用&.cn&来初始化str1 的时候,就在堆上分配了一个string 对象,当初始化str2 的时候,也指向了这个对象。当str1 改变的时候,并不是修改了原有的对 象,而是新创建了一个对象,但str2 还是指向原来的对象,所以,str2 的值并未改变。C#基础(五)(C#条件,循环和判断)一、条件语句1、if 语句我们来看个示例using Susing System.W.cn{class MyFirstClass{static void Main(){string str=Console.ReadLine();if(str=="GoSoA"){Console.WriteLine(".cn");}else if(str=="163"){Console.WriteLine("");}else if(str=="sina"){Console.WriteLine("");}else{Console.WriteLine("");}}}}在上面的代码示例中,我们可以看见,if else 的用法。很简单的哈。2、switch 语句假如,需要判断的条件很多,我们可以视情况而定,考虑使用switch 语句。我们看下面的示例,using Susing System.W.cn{class MyFirstClass{static void Main(){string str=Console.ReadLine();switch(str){case "gosoa":Console.WriteLine(".cn");case "163":Console.WriteLine("");default:Console.WriteLine("");}}}}在这里,我们需要注意,case 后的值,必须是常量,不可以是变量。而且case 结尾是冒号,每个case 后都必须跟有一个 break 。句中default 是在所有的case 语句都失败的情况下执行的操作。我们再看个例子,using Susing System.W.cn{class MyFirstClass{static void Main(){string str=Console.ReadLine();switch(str){case "sina":case "google":case "gosoa":Console.WriteLine(".cn");case "163":Console.WriteLine("");default:Console.WriteLine("");}}}}在这段示例代码中,前两个case 后都没有执行语句,这样是允许的,但该段代码会输出
,因为,在case 没有执行语句的时候,会依次执行下去,直到第一个有执行语句的case 。所以,就输出了。在这里,还有个 goto 语句,但,我们不提倡使用,在这里就不说了。如果您有兴趣,可以去google 下。^_^。二、循环1、for 循环。我们还是以示例来讲解。using Susing System.W.cn{class MyFirstClass{static void Main(){for(int i=0;i&100;i++){Console.WriteLine(i);}}}}我们来看示例中的,for(int i=0;i&100;i++) 这段代码,这就是for 循环。其执行过程是这样的:首先,初始化一个变量i=0,然后判断,i 是否小于100,如果成立,则执行Console.WriteLine(i)这句, 执行完后在 i++ (i++的意思是,i=i+1)。现在i 的值变成了2,接着判断,i 是否小于100,再接着执行 。。。。直到i 小于100 不成立,就会退出循环。2、while 循环while 循环,我们也以例子来学习。using Susing System.W.cn{class MyFirstClass{static void Main(){int i=0;while(i&100){Console.WriteLine(i);i++;}}}}While 的执行过程是这样的,第一步就直接判断,i 是否小于100,如果成立,则执行Console.WriteLine(i) 和 i++ 语句。接着进行判断,一直到i 小于100 不成立。3、do&while 循环我们依然来看示例代码。using Susing System.W.cn{class MyFirstClass{static void Main(){int i=200;do{Console.WriteLine(i);i++;}while(i&100);}}}该段程序,输出的结果是 200.因为do while 的执行过程是 先执行再判断,所以,就先输出了 200.4、foreach 循环我们看示例using Susing System.W.cn{class MyFirstClass{static void Main(){string [] strArr={"www","gosoa","com","cn"};foreach(string temp in strArr){Console.WriteLine(temp);}}}}首先我们定义了一个 strArr 字符串数组。foreach(string temp in strArr) 就是来遍历该数组,并 且输出数组中的每一个项。该示例输出的结果是 www, gosoa ,com ,cn 三列。三、跳转语句1、break 这个关键字我们在上个示例中见到过了,是用来退出某个case 语句的。实际上,break 也可 以退出for foreach while 等循环。2、continue ,和break 类似,只是break 直接跳出了迅,而continue 不会跳出循环,只是该次循环不 执行,直接执行下次循环。我们看一段示例。using Susing System.W.cn{class MyFirstClass{static void Main(){string [] strArr={"www","gosoa","com","cn"};foreach(string temp in strArr){if(temp=="www"){}Console.WriteLine(temp);}}}}该示例输出的结果是 gosoa ,com ,cn 三列。和上个示例的不同之处,就是少了 www。3、return 语句。该语句一般用于退出类,或者方法的。如果方法有返回类型,则return 语句必须返回这个类型的值。 如果没有返回值,就直接return 就可以了。
【PSS SDK官方教程文档翻译】(2)在设备上运行设置创建项目
在Android设备上运行的设置
本文说明了在Android设备上运行PSS应用的步骤。注意这个步骤需要Android设备有无线网络环境,连接到网络。
1、通过USB线将Android设备连接到开发用的PC上。2、在开发用的PC上安装Android设备的驱动。3、PSS应用将安装到Android设备的SD卡上,确保SD卡有足够的空间。
1、因为PSS应用在启动时必须连接到我们的服务器进行认证,所以请确保Android设备已经和网络建立的无线连接。2、在PSS Studio打开任意例子,然后从下拉列表中选择Android(xxxxxx)。
昨天 23:08 上传
注意:(xxxxxx)表示Android设备的ID号,每个Android设备的ID都不同。3、从菜单中选择[Run]-&[Debug],或者按F5键来将相关文件从开发用的PC上传送到Android设备上,并启动应用。
在PSV上运行的设置
本文说明了在PSV上运行PSS应用的步骤。在PSV上运行需要一个记忆卡和无线网络环境(WiFi/3G)。
在开发用的PC上安装PSV的USB驱动如果开发用的PC的系统是Windows XP,在通过USB线将PSV连接到开发用的PC上时会被提示重新安装USB驱动。在这种情况,根据Windows对话框中的指示在开发用的PC上安装USB驱动。如果系统是Windows 7,将不需要这么设定。
在Windows XP上安装USB驱动
1、通过USB线将PSV连接到开发用的PC上。当连接后,会显示下面的对话框;选择"Yes, this time only"(是的,仅本次)然后点击"Next"(下一步)按钮。
昨天 23:08 上传
2、选择"Install the software automatically (Recommended)"(自动安装软件(推荐))然后点击"Next"(下一步)按钮。
昨天 23:08 上传
3、点击按钮将开始安装过程。
昨天 23:08 上传
4、当USB驱动安装完成,会显示下面的对话框。点击"Finish"(完成)按钮来完成安装过程。
昨天 23:08 上传
在PSV上安装PlayStation Suite Development Assistant(PSS开发助手)
接下来,在PSV上安装PSS开发助手。按照下面的步骤来安装。1、在PSV主界面轻点"Browser"(浏览器)来启动它。输入下面的URL来访问PSS开发者入口。
2、选择PlayStation Suite Development Assistant下面的"download"(下载)将启动PS商店。在打开的页面中选择"PlayStation Suite Development Assistant"并下载它。3、下载完成后,它将自动安装到PSV中。检查"PS Suite Dev"图标是否已经加入主界面。
昨天 23:08 上传
启动PSS开发助手1、通过USB线将装有SD卡的PSV连接到开发用的PC上。2、在PSV主界面轻点"PS Suite Dev"图标来启动它。3、因为PSS应用在启动时必须连接到我们的服务器进行认证,所以请确保PSV已经和网络建立的无线连接(WiFi/3G)。注意:当PSV认证成功,接下来的24小时将不会再次进行认证。
PC端的设定
1、在PSS Studio打开任意例子,然后从下拉列表中选择PS Vita(xxxxxx)。
昨天 23:08 上传
注意:(xxxxxx)表示PSV的ID号,每个PSV的ID都不同。2、从菜单中选择[Run]-&[Debug],或者按F5键来将相关文件从开发用的PC上传送到PSV上,并启动应用。
创建一个新项目
创建一个PSS解决方案
本文将描述如何创建一个PSS解决方案。1、在PSS Studio的欢迎页面选择[Start a New Solution]或者从菜单选择[File]-&[New]-&[Solution..]。
昨天 23:08 上传
2、在对话框坐标的树形视图中选择[C#]-&[PlayStation Suite],然后在窗口的中间选择[PlayStation Suite Application]。创建好的[PlayStation Suite Application]包含一套执行程序用的文件。设置好项目名称和保存位置后按OK按钮。
昨天 23:08 上传
3、当你完成这些设定,将创建好一个新的PSS项目。执行build(生成)后像前面章节提到过的按F5来运行。当创建好,将显示一个类似下面的屏幕。
昨天 23:08 上传
【PSS SDK官方教程文档翻译】(1)关于PSS SDK和设置开发环境
一、关于此文档PS Suite SDK(PlayStation(R)Suite Software Development Kit)是索尼电脑娱乐(SCE)提供的一款多平台应用开发及执行环境。该文档将向使用PS Suite SDK来开发PS Suite应用的人们提供开发信息。初次使用PS Suite SDK的开发者请参考关于PS Suite SDK的内容以及开发环境设置的内容。已有使用经验的开发者可以在发行说明中确认版本变动。&
关于PS Suite SDK
二、PS Suite SDK是什么?PS Suite SDK(PlayStation(R)Suite Software Development Kit)是一款支持多平台应用的开发环境。PS Suite SDK创建的应用程序(以下简称为PS Suite应用)由一个可以在不同设备上运行的二进制文件构成,例如PlayStation(R)Vita和Android设备等。由此,开发者不必为每种设备单独再写一份代码,可大幅度提高应用开发的效率。此外,PS Suite SDK支持Windows作为原型开发环境,在各平台上运行之前,可在上模拟运行,提高开发效率。&
三、PS Suite SDK可在哪些平台中运行?PS Suite应用可在以下平台中运行:1、PlayStation(R)Vita2、Android设备 (必须支持PlayStation(TM)认证)3、Windows PC(需要支持OpenGL 2.0或以上的显卡)※支持PlayStation(TM)认证的设备请参考。
四、PS Suite SDK开发概要&PS Suite SDK是在集成开发环境基础之上,采用语言进行开发的。&编译器将源代码编译成托管代码。&可以通过点击的按钮,将生成的应用传输到各个设备中。&已经传输好的应用,在运行时(兼容的虚拟机)执行(运行时编译执行)编译,由此来执行程序。
前天 23:15 上传
五、开发使用工具PS Suite Studio:作为集成开发环境(),使用。UI工具箱:工具箱是中,为了创建而包含设计图和组件(部分)的一种库。PS Suite UI编排器(在本文档中简称为编排器):作为设计的支持工具,可实现按钮和标签等组件的布局,也可以进行各种组件的属性设置。详细说明请见。&
六、APIPS Suite SDK提供了一个基于的类库,其中包括开发游戏最基本的功能,例如纹理、声音、图像、字体、游戏控制器等类。关于的详细说明请见。
设置开发环境
七、设置集成开发环境
前天 23:15 上传
&&启动首先双击桌面上的图标来启动该程序。PS Suite Studio启动后,会显示以下画面。
前天 23:15 上传
&生成&运行例子,打开解决方案,首先打开解决方案文件。解决方案文件中包含了项目配置,其扩展名为。在的菜单中选择&,从对话框中选择,然后打开。例子默认安装路径如下:Windows XP:C:/Documents and Settings/All Users/Documents/Pss/"Windwos 7:C:/Users/Public/Documents/Pss/"
前天 23:15 上传
生成,在PS Suite Studio的菜单中选择&,或者直接按键来执行生成。想查看生成结果的日志,要点击窗口左下的部分,并按下键。
前天 23:15 上传
&&当窗口左下显示时即为生成成功。&选择执行平台,在确认生成成功后,运行生成后的应用试试看。首先要选择执行平台,首先试着在下运行一下。1、将鼠标移动到工具栏的位置,右键点击,会出现下拉菜单。
前天 23:15 上传
&&2、在下拉菜单中选择PlayStation Suite Simulator(PSS模拟器)。3、在菜单中选择&,或者直接按键启动应用程序。
前天 23:15 上传
&&在的应用输出窗口中会显示应用程序输出的字符串。※可以从菜单的&&来显示应用程序输出窗口。4、想要结束应用程序,请点击窗口右上角的&或者直接按键。
PSM称《合金装备5》游戏背景将设在1970年
根据最新一期的PSM杂志报道。《合金装备》系列最新作《合金装备5》游戏将设定在1970年的非洲,3代游戏主角Big Boss或许将重新登场,游戏还将展现系列主角之一的Solid Snake的诞生。
  在PSM杂志10页的深度专题报道中,《合金装备》系列专家Dan Dawkins以专业视角分析了系列的时间线,并摘选过去12个月以来小岛组负责人小岛秀夫的微博,而种种证据最终得出了上述的结论。  合金专家Dan Dawkins所给出的最有力的证据就是小岛秀夫为GDC做的'the next MGS'广告图,我们可以看到3代主角Big Boss以及非常具有诱惑力的口号:Big Boss Wants You!
  而在小岛组官网上也暗藏玄机,在小岛组官网的一张包含Big Boss的图上,Big Boss的肩膀上出现了 'Diamond Dogs' 的Logo,而'Diamond Dogs' 则是David Bowie与1974年发行的一张专辑的名字。(而小岛也曾承认自己是一名David Bowie的粉丝),而更为重要的是,Angola的钻石矿可能是系列新作的设定地点。
  此前,系列角色Frank Jaeger,Cyborg Ninja和Big Boss都和非洲的一些地区有过联系,这也显示了非洲地区对于《合金装备》系列的重要程度。  此外,在杂志中Dawkins还解释了为何新作地点以及时间线得选择意味着灰狐的复仇,并考证小岛秀夫的'Project Ogre' 恶魔计划是否和《合金装备5》是一个内容。  对于这个文章的作者Dawkins,在去年他曾经成功的透露《横行霸道5》游戏的主要角色,游戏主题。并且是在《横行霸道5》公布数月之前。因此这一次的大胆预测推理,并不完全是空穴来风。
PSV自制软件安装教程
PlayStation Suites简介
PlayStation Suites 是 Sony 公司推出的跨平台开发套件。 通过该套件可以开发PSV平台的各种游戏和应用程序。目前套件为公测版,非正式版.
安装配置开发环境
在学习本教程之前,请现首先下载
PC端: PlayStation Suite SDK (PS Suite开发工具)
PSV端: PlayStation Suite Development Assistant (PS Suite开发助手).
PS Suite SDK (目前官方为0.98版): 下载地址为: http://pss.dl.playstation.net/pss/sdk/PSSuiteSDK_098.exe
PS Suite SDK安装
下载完成之后,请打开PSSuiteSDK_098.exe进行安装. 安装步骤很简单,一直点&Next&就OK了. 安装完成之后,在桌面上会有2个图标: PssStudio (开发工具,是基于Mono开发平台) 和 UIComposer (UI设计工具). [如果是不是开发人员,可以忽略UIComposer]
前天 17:06 上传
PS Suite开发助手的安装
PS Suite开发助手的安装有点麻烦,需要用户用PSV的浏览器登录/pss/developer/openbeta/index_e.html, 然后点击 &Download& 按键. (如下图)
前天 17:06 上传
PSV就会自动下载和安装. 安装完成之后,会在主界面上显示 PS Suite Dev图标. 如下图
前天 17:06 上传
打开PssStudio
前天 17:06 上传
PSSStudio 主界面
前天 17:15 上传
点击 File -& Open -& 选择已经下载的游戏\软件的路径. 选择 xxx.sln (就是Solution, 工程文件),点击Open. (如下图)
前天 17:06 上传
这时,源代码就会被加载. 只需要4个步骤就可以把程序发布到PSV中。
1. 选择编译模式. 选择Release模式. (如下图). [学习开发的朋友可以看一下:Debug模式就是调试版本,包含了调试信息(开发人员会在里面写入一些调试信息),并且不做一些优化,Release模式为发布模式,一般是进行了优化了.
前天 17:13 上传
2. 编译源代码. 点击 Build -& Build All. (F8为快捷键), 编译完成之后会在界面的左下角显示 Build Successful (编译成功). 如下图
前天 17:06 上传
3. 选择运行平台. 编译好之后,就可以运行程序了. 这时候需要选择采用 PlayStation Suite Simulator (PSS模拟器)运行还是发布到PSV上运行。 因为我们需要发布到PSV中,所以选择PSV就OK了。 (需要把PSV提前插入到PC上,才会在下拉列表中显示PSV).
注: 需要现在PSV上运行PS Suite Dev,然后把PSV通过USB连接到PC.
前天 17:06 上传
4.发布程序. 选择 Run -& Start Debugging. 这样就可以把软件发布到PSV中了. 发布的之后会先显示下面Waiting for debugger的对话框.
前天 17:06 上传
发布成功之后,在下面的输出框中会显示 Application uploaded.
前天 17:06 上传
注: 发布到PSV的时候,需要一些时间,请大家耐心等待,等到显示Tread Started证明已经发布成功,这时候回到PSV中,就能看到程序经运行了.
软件\游戏运行
程序发布到PSV之后,下次只需要打开PS Suite Dev就可以看到安装的软件\程序.&
前天 17:06 上传
PS Suite SDK 自带游戏Demo路径 :
XP下为: X:\Documents and Settings\All Users\Documents\Pss\sampleWin7下为: X:\Users\Public\Documents\Pss\sample中文系统是: X:\Users\Public\文档\Pss\sample
PS Suite SDK 开发文档路径 :
XP下英文版为:X:\Documents and Settings\All Users\Documents\Pss\doc\en
XP下日文版为: C:\Documents and Settings\All Users\Documents\Pss\doc\ja
Win 7下英文版为:X:\Users\Public\Documents\Pss\doc\en
Win 7下日文版为: C:\Users\Public\Documents\Pss\doc\ja
路痴的悲剧 细数RPG史上迷宫最BT的10大游戏
不易探索的领域,是RPG几乎不成缺少的要素之一,既可提高难度,又可以延长游戏时间,还能满足部分玩家的挑战欲。从1979年的阿卡拉贝到现在,RPG已走过近30个年初,天然也诞生了无数可歌可泣的BT不易探索的领域,因此讨论哪个不易探索的领域最BT成了网上多见的话题。&可是,难度是相对的,你觉得BT别人可能觉得是小菜一叠,经常看到有些玩家将某不易探索的领域吹的神乎其神,结果一玩才发现&& 这就申明要客不雅地排名非得见多识广不成。不过,在排名前起首声明: 1、由于RPG数量太多,所以本排名并不是金科玉律,尤其是6-10名尚有斟酌之处。 2、对现在日式RPG风行的数百(万)层不易探索的领域一律无视。理由是这些不易探索的领域基本上是毫无技术含量的随机生成型,与精心设计用来整人的不易探索的领域来说不成相提并论,再者,它们一般都是为了打开隐藏要素而设计的,并不是主线流程。 纵然纯以难度来说,此类不易探索的领域最多战斗够BT(好比我听闻某日式RPG有个500层不易探索的领域,玩家无论之前等级多高,装备多好,进去后立刻变成1级、最乐瑟的装备,且一旦阵亡,进度会被自动删除),但不易探索的领域的BT度要害还是要看路径的复杂度和迷题的难度,所以本文不必考虑此类游戏。
第十名 魔界召唤魔界召唤虽然是1992年的游戏,但当时已作出DIABLO式的3D界面,整个游戏就是由40多个不易探索的领域组成,但同DIABLO一样有自动地图系统,所以玩家们在大多数时间都玩得很惬意,不会被不易探索的领域所困饶。
不过,有人曾经提到:&如果DIABLO去掉地图会怎么样?不敢想象&&.& 不敢想象??但魔界召唤的设计者在后期的地下水道就这么狠心地向玩家下了手。而这个地下水道规模之大,岔路之多(约荆柯外传山洞岔路数量的两倍)实在是骇人听闻,而且岔路还很长,纵然无阻碍地走也要半分钟才能到尽头。 别跟我说半分钟不算长,当你走某一不易探索的领域走得即将瓦解时10秒钟都够长。更使人发指的是,不易探索的领域中还有很多区域一旦进入除了四处移动和系统操作外其他都被禁止了,连使用道具补血都不成&&.&如果单以该不易探索的领域来说,魔界召唤在这个排名中还有上涨几位。但考虑到游戏中其他不易探索的领域尚算简单,而且允许随时S/L,所以只能冤屈其在第10名了
第九名 仙剑奇侠传&通不雅《仙剑奇侠传》整个系列都没有什么使人发疯的不易探索的领域,但为什么其能排在《魔界召唤》之前?就是因为全系列的不易探索的领域均等难度还算不低。不过,对这个游戏不易探索的领域的讨论已经非常之多了,这里就再也不空话了。
第八名 荆柯新传&对FC玩家来说,《荆柯新传》经常是一个话题,原因不在于这个游戏品质有多高,而是其不易探索的领域的BT也算到了一种境界:玩家不能全屏不雅看周围的路径,原因是不易探索的领域里面很暗,而自带的照明道具只能将自身所处的位置那一点地方照亮,这就给人一种心理上的畏惧感,再加上其规模确实不小,遇敌率也高,所以当时能通关的人很少,纵然通了,也是靠画图。
不过,如果把这不易探索的领域当作史上最BT那就太夸张了,那时大陆玩家的RPG功力普遍奇低,连《七宝奇谋I》这么简单的游戏都会转得晕头转向。 如果大家还是不忿的话,那请接续看下去,保证让你知道什么叫做残酷之极。&
第七名 勇者斗恶龙&DQ系列在中国历来人气不及FF系列,最大的原因就在于它在难度上的不当协。其强调BT的练功体式格局是相当出名的,可以说它是日式(中式也算日式的一个分支)RPG三步一雷的鼻祖。有位玩家说的好:&其实不易探索的领域复杂还能忍受,就怕战斗频繁让人一会儿就忘记走到什么地方。&
DQ就是这类游戏,此中尤以二代最为BT,其后期有个无限循环不易探索的领域如果走错的话会始终转不出去,再加上里面遍布超强妖怪(纵然练了级都可能被秒)和极其繁琐的LOAD模式会使玩家在此卡很久。&另外说道遇敌率的问题,我倒觉得很多所谓&三步一雷&的游戏其实是玩家强调事实了,以DQ为例,确实很很长时间候几步路就得打一仗,但有时RP 好可以走上二十步不遇敌,所以均等下来还是可以接管的。我印象中遇敌率无上的是《魔武王》这个游戏真正作到了&五步一雷&的频率,可是逃跑率是100%,所以&&.&
第六名 黎明之砧&相信有点资历的玩家都会公认&主视角3D不易探索的领域一出,95%的中式、日式RPG的不易探索的领域就能够退到后面老老实实地当BT不易探索的领域替补&这句话。&对于年龄较小的玩家来说可能无法领会到这类不易探索的领域的&内在&,那一定要找个玩过此类游戏的玩家给你解释一下,然后你就能知道这世界上有类不易探索的领域如果没有地图那基本上是死定。(所以DQ、荆柯新传你们还嫩了点)
黎明之砧之所以在主视角3D不易探索的领域里面还不算&狠毒&,首要在于其自带了地图。不过不少隐藏因素无法在地图上显示,再加上美式RPG的优良传统传送点、转向点大量呈现,所以有玩家惊呼&黎明之砧不易探索的领域BT度是魔法门的100倍!&&不过这里还是要为《魔法门》申一下冤,《魔法门》不易探索的领域确实简单,但那是从3代才开始的,1代的地图规模还是超大,要玩通玩家要花费大量心血绘图。&
第五名 天地劫系列&对缺乏玄学知识的大陆玩家来说,天地劫系列的不易探索的领域根本不难,难得是解谜,不过在台湾玩家眼中,这些跟玄学有关的迷题还算可以接管。不过不看攻略打出完美结局的几率极低仍然是两岸玩家的共识。另外全系列的战斗也比较BT,被秒是家常便餐。可是现在已经有不少玩家开始醒悟过来:觉得这个系列难其实是因为以前BT游戏玩的太少,现实上,有不少人可以完全不看弓略通关(固然不是完美结局)
对《幽》、《宦》的难度讨论也是非常多,所以这里重点介绍一下系列最早发行以至于没多少人玩过的《天外剑圣录》。此游戏可以称作DOS时期不易探索的领域最难的国产游戏,游戏中第一个正式的不易探索的领域其规模已经跟很多游戏最大的不易探索的领域差之不远,到后面还有暗机关呈现(在墙上隐藏的一块砖),再加上有几个不易探索的领域由于剧情需要走两遍,所以玩到一半时,估计很多人已经在想:&从速结束吧,我不行了。&但当他们来到剑圣墓冢这个极品时,才知道&&&墓冢内部呈八卦形状布置,每个卦象由一个不易探索的领域来暗示,没个不易探索的领域3层,合计24层,而且还要按特定顺序走完,否则会多跑冤枉路。&虽然我过这不易探索的领域没费多少功夫,但一想到当年无数对汉堂怀着美好憧憬的玩家魂断此处,也不禁领会到设计者已深得&水至清则无鱼,人至贱则无敌&之妙。&
第四名 女神转生
女神转生是日式RPG中采用主视角3D不易探索的领域的异类。虽然也有部分自动地图,但由于加上了不少落坑(踩上就掉入另外一层),全暗区域(除界面外绝对看不到任何东西,所以说荆柯新传那种水平还算差),此外还有每走一步必受伤的区域,因此比黎明之砧要难点。&固然有人用FC模拟器S/L上千次才打通这游戏,并声称这就是史上最BT的不易探索的领域,这个未免就过分了点,申明该玩家此类游戏打得太少。试问如果需要 S/L 1000次才能通,当年那些用卡带的玩家怎么通关??而且当年通关的玩家也不在少数,毕竟女神转生的不易探索的领域规模还不算大。&下面谈到的三个,才是史上公认的超BT游戏。想知道吗?那请接续看下去。&
第三名 魔眼杀机系列&整个80年代,WESTWOOD都在当时业界巨头SSI的旗下极其郁闷地度过。当他们疏懒地制作魔眼杀机时,根本没想到这游戏会一炮而红成为本身的成名作,不过也因为这种郁闷的心理作怪,所以本游戏的不易探索的领域成为了BT史上的一座丰碑。&全程不带地图,传送点遍布,另外需要不停地在楼梯上爬上趴下使绘图更加困难。
1年后,WESTWOOD推出了二代,不易探索的领域部分获得简化,但仍然让不少玩家高呼BT,此中有一个叫做&视物感觉的考验&不易探索的领域公认为二代最难:设计者在地上安顿了看不见的传送点,一踏上去瞬间就被传送了(没有传送过程,也没有音效提醒),而且传送前与传送后看到的画面非常类似(所以叫视物感觉的考验)所以玩家们对这个不易探索的领域的印象就是始终在一个地带打转,可是又不知道原因为何。我一贯是坚持全不易探索的领域探索的,但在这个不易探索的领域面前也只求&快速经由过程,因为根本搞不清为什么会呈现原地打转的现象,厥后看了官方攻略才知&&&不过厥后看到一个台湾玩家居然声称从头到尾没画一张地图通了2代(1代估计还是不行,呵呵),当时给我的感觉实在是震惊(说句比较客不雅的话,任何一个玩过2代的人会告诉你不画地图通关绝对比不接关通FC上的魔界村难的多),我天然认为其是吹牛,不过当该玩家声明是在另外一个游戏的BT不易探索的领域考验下练出这般功力时,我就开始揣摩是哪个游戏,当他说出名字后我毫不犹豫地相信了他的话,因为在那款游戏面前,〈魔眼杀机〉的难度也只能被秒杀。它&&.就是真正史上不易探索的领域最BT的游戏。&
第二名 巫术系列&对巫术系列的难度没有必要用其他语言来描述,仅仅几个字就能概括&妙手中的妙手玩的游戏&。
巫术是我所知道第一个采用3D主视角的游戏,且传送点、转向点、落坑、全暗区域、禁魔区域(不准使用魔法)都是其原创的要素,由于其在日本影响很大,所以通常使用3D主视角的日式RPG都是原封不动抄袭巫术的不易探索的领域设计体式格局(女神转生是最典型的),不过不易探索的领域规模和不带地图这些东西就比日式RPG明显难。&其实光论不易探索的领域复杂度,巫术不一定难过魔眼杀机1,但考虑到不易探索的领域内部那些秘题,巫术就BT多了,此中以四代为最,从六代起,设计者开始考虑初学者悲愤的心情,作得人道化了一点,那么以街机STG为比喻,大多数RPG相当于〈1945〉一周目的难度,最多到2-4。那么〈巫术 6〉就到了2-8的难度,而六代以前则是〈大往生〉、〈虫姬〉的难度。&
第一名 仅以本文献给一个1985年出品的游戏&对于从80时代就开始玩PC GAME(其实那时应该叫 APPLE GAME)的骨灰级玩家来说,有一个1985年出品的游戏将成为他们RPG生涯中的终生一生没世梦魇,非常敬佩当年的老玩家功力,现在的新手实在应该以他们为榜样。&台湾最知名的资深玩家&小南&,是把〈创世纪〉、〈巫术〉、〈魔法门〉、金盒系列从一代开始一个不放过的全数打通的达人,此外还买了FC及FC 磁碟机,还有更早的GAME WATCH,所以说他对TV GAME也是达到了博学的程度。在我的影象中,能被这个见多识广的玩家大呼BT的游戏少之又少,能称为超级BT的游戏更是只有两个。前面的〈巫术〉是一个例子,另外一个就是现在我要谈到的游戏,它被小南直接痛斥为&超级BT的RPG&
游戏毫无疑问是不带地图的3D主视角,现在请你发挥本身想象力判断一下我下面所描述的这种情形:当你走上几步,就进入了战斗画面,敌人将近 900个。不敢逃跑啊,万一掉败,这900个敌人一个回合得打掉你多少血? 好&.好不容易战斗胜利后,才走几步,踩到一个传送点就不知被传送到了什么地方,正在发火,刚走几步,什么??又是几百个敌人&&.荣幸胜利后,再走,进入了死亡陷阱,结果&..被秒杀。而游戏不准随时 SAVE&&.&如果不是因为这个游戏做得过于出色(80年代超一流的RPG),不知有多少玩家愿意打下去??到了二代,战斗比例更高(本以为900个敌人已经顶天了)但由于游戏水准大降,所以不值一提。&虽然这个游戏是1985年推出的,但自那以后20多年已往了,全世界尚无任何一个敢于同本作挑战不易探索的领域BT度的RPG。&很想知道是什么游戏吧?其实,现在它已经有了重做版,它就是THE BARD&S TALE (冰城传奇)。
索尼Facebook秀神秘 下周《战神4》将公布?
4月份算是个游戏淡季,鲜有让人兴奋的游戏推出,但是现在从索尼的官方Facebook上则传来了令人兴奋的消息。他们在Facebook上放出了一张图片,图片揭示了下周将有神秘的信息公布。  图片下面还有一句留言写到:&复仇将带来救赎? - 04.19.12&,这句话是否暗示着什么呢?在从这张图片中那些看似用血写成的文字来推测,大家可能都会想到一块去吧!至于答案是否和我们所想的一样,那就一起期待4月19日的到来吧。&
PS4原生支持OpenGL
我们获悉,索尼下一代游戏主机PS4将原生支持OpenGL。
根据业界匿名人士透露,索尼下一代游戏主机代号Orbis,它将原生支持OpenGL绘图API。
索尼目前的游戏主机PS3并不原生支持OpenGL,只是通过其操作系统LibGCM来模拟OpenGL运行。
匿名人士表示,下一代Orbis原生支持OpenGL,会给PS4游戏开发者带来更多便利性。
OpenGL是行业领域中最为广泛接纳的 2D/3D 图形 API, 其自诞生至今已催生了各种计算机平台及设备上的数千优秀应用程序。OpenGL是独立于视窗操作系统或其它操作系统的,亦是网络透明的。在包含CAD、内容创作、能源、娱乐、游戏开发、制造业、制药业及虚拟现实等行业领域中,OpenGL帮助程序员实现在 PC、工作站、超级计算机等硬件设备上的高性能、极具冲击力的高视觉表现力图形处理软件的开发。
家用机《失落的星球3》欧版宣传视频
FPS+TPS+RPG+RTS合体游戏什么样?
国外玩家iWaNN制作了一张名为&The Hundred&的《星际2》自定义地图,并加入了FPS+TPS+RPG+RTS Mod,使得这个作品成为了一个不折不扣的精品地图。在这张地图里,玩家拥有100名平民,每个平民允许操纵1个单位,并且拥有独立的等级,可以学会各种特殊技能。随着等级的提高和技能的学习,平民可以驾驶更加强力的单位,例如雷车或是坦克等等。而最初只能控制SCV,枪兵和护士。然而这都是小事,最重要的是作者为这张地图加入的多玩法系统成功的把FPS+TPS+RPG+RTS无缝连接到了一起。具体效果如何,我们来一起看看演示视频吧。
传下一代PS主机应用AMD南岛芯片
Kotaku的线人声称下一代索尼PlayStation主机(暂以PS4指代)代号为Orbis,计划于2013年圣诞期间面市。
据称该线人极为可靠,他是少数几名被授权向公众发布PS4新闻的人士之一,只不过这些本应随后公开的材料被事先拿来与Kotaku分享。
索尼已为Orbis注册了域名,面向开发者的Orbis.SCEDev.net网站被引导至SCEDev主页,目前在那上面还找不到任何与Orbis有关的蛛丝马迹。但幕布之后则是从今年春开始,首批Orbis开发套件将陆续递交到某些选定的开发单位手中,GDC 2012期间这些单位会收到修订版开发套件,至今年年底将向开发者提供完成形态的PS4 beta实机。
据称PS4将使用全套AMD器件,包括x64处理器和"南岛"图形芯片,画面分辨率可高至(好像是下一代高清标准),3D画面则支持1080p全高清(目前仅支持720p)。
游戏发行模式采用双轨制:蓝光载体以及PSN数字下载。新主机要求用户登录PSN账户方可进行游戏&&与现有的PC数字发行平台类似,无论购自何种载体,游戏均绑定在自己ID名下,玩家无法交易二手游戏,除非连账户一起转让(但用户协议又禁止这么做)。
至于PS4是否向下兼容,据说索尼从一开始就没有兼容现有游戏的打算。
微软野心推进:Xbox充当千家万户机顶盒
据统计,Xbox 360的所有者们,使用Live服务中的娱乐内容的时间已经超过了玩游戏的时间,而且用户在Xbox Live中的花费的时间保持着30%的年增长率。这似乎也迎合了微软从去年底开始规划的Xbox系统家庭娱乐终端计划。根据Xbox市场部门向媒体透露的信息,微软最近在致力于让玩家打开Xbox 360去玩游戏这个行为之后的事情,也就是让玩家在玩完游戏后依然留在Xbox这个系统中,去享受些其他娱乐。根据统计,半数以上的Xbox Live在线时间被用在了电影、电视剧、音乐等娱乐活动上,用户每月花费在XboxLive上的平均时间高达84小时,相比去年增长了30%,这些增长主要来自于非游戏的娱乐服务。目前有微软拥有2000万Xbox Live的付费用户,而这部主机的全球销量超过了6600万,不断增长的用户时间投入明显来自于非游戏娱乐的话,这将是一个相当庞大的家庭娱乐终端,对传统的娱乐供应商将具备强大的吸引力。可以看出,微软当年没能成功的机顶盒计划,似乎正在Xbox系统方面顺利推进。
《刺客信条3》新引擎:单画面可显示2000人
晚放不如早放,别人放不如自己放。有可能是登陆Wii U造势的需要,育碧在《刺客信条3》上的态度前所未有的透明。近日该公司在伦敦召开了面向媒体的发布会,进一步透露了本作的不少细节。
《刺客信条3》使用的引擎为《刺客信条2》中Anvil Engine的改进版&&AnvilNext Engine。据育碧介绍,AnvilNext Engine单个画面可显示超过2000人,能完整再现美国独立战争时期战场上军队的面貌。此外本作重要的城市如纽约、波士顿等规模要比之前作品中类似场所来得大,但由于技术性原因最重要的费城全貌暂时不会加入。
育碧声称,角色动画以及一堆物理特效/天气等光影效果的强化使得本作成为该公司开发史上最大规模的作品。关于Wii U版,虽然主机面世前游戏的上市时间也不可能确定,但育碧已经透露了一些Wii U版的独占特性,如Wii U的平板型摇杆可以作为游戏中的导航工具、模拟地图等。还可随时查看"Animus"数据库而不打断正常游戏进程,武器切换/鹰眼模式也可方便通过触摸屏来进行。不过在发售方面育碧似乎学习了它们日本同行的&光荣传统&,光限定版就有三个:Freedom Edition、Join or Die Edition以及&普通&的Special Edition。售价最高的Freedom Edition包括主角的手办一个,艺术设定和解说集各一本,以及三种DLC。PC/PS3/Xbox 360的这些版本将于10月30日上市。
60亿晶体管巨兽:GK110详细规格再泄
GTX 680已经来了,但是它留给人们的悬念还没有完全解开,虽然性能上凭借较高的预设频率小幅超过HD 7970,但是在计算性能上却败给了后者,这明显不像NVIDIA的风格,难道NVIDIA还留了一手?以前我是不相信还是GK110的,现在我信了,不在通用计算上扳回来NVIDIA就不再是NVIDIA了。&
NVIDIA自己的PDF中实际上是一直把GK104当成GTX 670 Ti&实际上GK104的定位相当于目前的GF114,并非最顶级显卡,只不过NVIDIA发现了有机可乘将之命名为GTX 680。真正的旗舰单卡还是GK110,虽然之前多次有过小道消息,但是这一次终于详细的规格信息了。&
XS论坛上泄露的消息显示GK110将命名为GTX 685&目前的GK104基本规格为294mm2核心面积,35.4亿晶体管,拥有4组GPC,8组SMX单元,每组SMX有192个CUDA核心和16个纹理单元,256bit/2GB显存,总计1536个CUDA核心,128个纹理单元,32个ROP单元,计算能力为3.09TFlops,但是双精度运算能力只有单精度的1/12,纹理填充率128.8GT/s。&GK110将拥

我要回帖

更多关于 玩游戏突然花屏死机 的文章

 

随机推荐