cao死我好湿好紧好爽动态视屏|精选久久久久久久久久|中文无码精品一区二区三区四季|AAA国语精品刺激对白视频|

當前位置:首頁 > 軟件開放 > 正文內容

用源碼編輯器制作射擊小游戲(源碼編輯器怎么玩)

軟件開放2年前 (2023-02-15)1900

本篇文章給大家談談用源碼編輯器制作射擊小游戲,以及源碼編輯器怎么玩對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。

本文目錄一覽:

用Unity 怎么制作3D第一人稱射擊游戲。

第一部分:簡介

這個教程中,我們詳細了解下如何制作一個簡單的第一人稱射擊游戲(FPS)。其中將介紹一些基本的3D游戲編程的概念和一些關于怎樣如游戲程序員般思考的技巧。

前提

這個教程假定你已經熟悉軟件Unity基本操作,掌握了基本的腳本概念。

創(chuàng)建新工程

下載FPS_Tutorial.zip壓縮文件,解壓,在Unity中打開工程文件。

從Unity安裝目錄導入Standard Assets資源包。

導入工程后,你會在Unity工程面板中的“Standard Assets”文件夾下看見這些資源內容。當我們導入新資源時,最好安裝按照資源功能對其分組,例如:火箭、爆炸、音頻等。

設置游戲環(huán)境

導入資源后,你會注意到在工程面板中有許多文件夾。

工程面板中,從文件夾“Object/mainLevelMesh”中選擇“mainLevelMesh”。

在參數面板,FBXImporter選項中,你會發(fā)現“Generate Colliders”選項,勾選此選項。如果不做這一步,游戲中玩家會穿越地面直接掉下深淵(實際是開啟“碰撞”,產生交互)

把“mainLevelMesh”拖放到場景中。

場景中不需要添加燈光,這關全部場景已經全部應用了燈光貼圖。整個場景對所有燈光進行了燈光貼圖渲染,使用了“預烘焙陰影”。燈光貼圖對顯示效果有很大幫助,特別是復雜燈光環(huán)境。

下面可以在場景中添加一個角色了。

添加主要角色

下面在場景中增加一個可以操控的角色物體。Unity針對第一人稱射擊游戲預置了許多內置的控制器,在工程面板Standard Assets-;Prefabs下。

添加第一人稱控制器,點擊工程面板Standard Assets旁邊的小三角,彈出資源列表。找到Prefabs文件夾,點擊小三角形,彈出資源列表。把“First person controller”拖到場景里。

這時場景中會出現一個代表玩家的圓柱體,三個大箭頭代表物體在3D空間中的位置(如果沒有看見箭頭,選擇物體,按“W”鍵),白色面代表物體當前視角?,F在FPS控制器處于默認視角位置,通過移動它可以改變游戲視野。把角色移動到游戲環(huán)境關卡地面上面的位置。

Main Camera現在已經沒有用處了,可以刪掉了。

點擊“Play”鍵,現在應該可以通過使用鼠標和鍵盤在本關卡地形中四處移動了(光標或者“W,A,S,D”)

現在我們創(chuàng)建了一個非常簡單的FSP,下面我們給角色添加武器。

增加武器

下面我們將給游戲角色一個類似榴彈的物體,可以在游戲中發(fā)射。要實現這個功能,需要創(chuàng)建一些腳本語言來在Unity中告知這個武器如何動作。

那么我們具體要實現什么呢?我們要使游戲角色能在攝像機的任意位置開火。但是,我們還是首先來思考一下游戲角色和武器。游戲角色游戲中是第一人稱的視角,所以攝像機的位置與眼睛平行。如果玩家使用武器射擊,武器應該是在角色的手部位置開火而不是眼睛的位置。這樣我們就要增加一個“game object”(游戲物體)來代表榴彈發(fā)射器,同時把它放置在游戲角色手持武器時武器所處的位置。這樣就保證了開火的位置沒有問題。

創(chuàng)建武器發(fā)射器

首先,創(chuàng)建一個“game object”代表榴彈發(fā)射器。游戲物體是3D世界中的任一物體(角色、關卡、聲音),零件就是游戲物體的屬性。因此我們還需要對游戲物體添加零件:

從主菜單欄選擇GameObjectGreat Empty,并在層級面板中(Hierarchy)命名為“Launcher”。注意,空物體在場景中是看不見的,只是用它來作放置飛彈發(fā)射器。

現在在場景中把視野推近到FPS控制器,便于我們放置武器發(fā)射器。

層級面板中選擇FPS控制器,確保鼠標處于場景視圖中,按“F”鍵。使窗口以當前選擇的物體為中心。

層級面板中選擇發(fā)射器,主菜單欄選擇Game ObjectMove to view。注意發(fā)射器如何移動到FPS控制器附近的。然后使用手柄,把發(fā)射器移動到大概角色手部的位置。

注意:可以通過設置這個物體的位置來設定游戲角色是左撇子還是右撇子,不需要寫代碼。

使Unity窗口模式是“2by3”模式(windowLayouts2by3),點擊播放鍵(play)。確保層級面板中點選了發(fā)射器,四處移動角色,同時觀察場景窗口。你將發(fā)現發(fā)射器并沒有隨著角色一起運動(現在再次點擊播放鍵停止運行游戲)

下面來解決這個問題,層級面板中,把發(fā)射器拖放到FPS控制器下面的主攝像機上。彈出的對話框點擊“是”。再次運行游戲,觀察場景窗口,發(fā)射器已經和角色運動一致了。這樣我們就把發(fā)射器與攝像機關聯起來了。

創(chuàng)建飛彈

下面我們來創(chuàng)建在玩家點擊開火鍵時能夠發(fā)射出來的飛彈。

我們先用一個簡單物體-球體-代替飛彈。Unity主菜單欄點擊AssetsCreat;Prefab創(chuàng)建一個預制(Prefab)物體,命名為“Missile”

創(chuàng)建一個球體(GameObjectCreate ObjectSphere)

層級面板中,拖放球體到飛彈預制物體上(Missile),這時預制物體圖標會變化。你可以從層級面板中刪除球體。

技巧:游戲運行中產生的任何游戲物體都應該是預制物體(Prefab)。

編寫飛彈發(fā)射器腳本

FPS控制器是一個包含了幾個游戲物體和部件的預制物體。FPS控制器本身是一個只能沿Y軸旋轉的圓柱體,因此,如果我們直接把發(fā)射器腳本賦予FPS控制器的話,是實現不了上下開火的。所以我們把腳本賦予控制器中的能夠四周轉動的主攝像機。

下面我們來編寫第一個描述發(fā)射器行為的JavaScript代碼。

點擊AssetsGreateJavaScript,創(chuàng)建一個空的JavaScript文檔。一個名為“NewBehaviourScript”資源將會出現在工程面板中,把它更名為“MissileLauncher”

技巧:通過Unity;Preferences點擊External Script Editor,可以自定義外部腳本編輯器。

工程面板中創(chuàng)建一個“WeaponScripts”文件夾,放置我們所有的武器腳本。把MissileLauncher腳本和飛彈預制物體(Missile Prefab)拖到這個文件中。

我們來看看飛彈發(fā)射器的完整JavaScript腳本。

進一步思考一下,我們到底想實現什么效果?我們要檢測玩家是否按了開火鍵,然后產生一枚飛彈,然后把它沿著玩家朝向的方向按照一定的速度發(fā)射出去。我們仔細的解剖一下腳本:

var projectile: Rigibody;

var speed=20;

function Update( )

{

這是腳本的開頭部分,定義了一些屬性,開啟了“Update”的功能

if(Input.GetButtonDown(“Fire1”))

首先我們要檢測玩家是否按了開火鍵,“開火1”映射的是鼠標左鍵和當前配置的鍵盤上的按鍵(可以通過主菜單欄的Editor;Project SettingsInput設定)

{

var instantiatedProjectile: Rigidbody=Instantiate(

projectile, transform.position,transform.rotation);

我們用變量來定義產生的物體。變量的類型是Rigibody(剛體),因為飛彈是具有物理屬性的。

Unity中產生新物體使用的函數是Instantiate,它有三個參數,分別是:產生的物體、產生物體的3D空間位置、物體的旋轉。它還有另一個語法結構,參照API手冊,這里我們只使用這種結構。

第一個參數,projectile,代表我們想創(chuàng)建的物體。那么到底發(fā)射什么物體?具體產生的物體是可以手動設定的。實現方法:把Projectile定義為函數的外部變量,這樣就可以在參數面板中顯示出來。發(fā)射的物體也可以通過代碼來創(chuàng)建,但如果你想使一個變量可調的話,還是用上面的方法。

第二個參數,transform.position,使產生的物體與發(fā)射器的空間位置一致。為什么就是發(fā)射器呢?因為如果要使飛彈產生的位置沒有問題,腳本就要關聯給發(fā)射器。(transform讀取的transform數據就是被賦予腳本的游戲物體transform數據)

第三個參數transform.rotation,與第二個類似,只是它的值與發(fā)射器的旋轉值是一樣的。

代碼的下一部分使飛彈產生運動。為了實現運動,我們要賦予飛彈一個速度,但是在哪個方向上(X,Y,Z)產生速度呢?在場景中,點擊FPS控制器,出現運動箭頭(如果沒有出現,按“W”鍵),其中一個箭頭是紅色、一個是綠色、一個是藍色。紅色代表X軸,綠色代表Y軸,藍色代表Z軸。因為藍色指向的方向,與玩家面朝的方向一致,所以我們要在Z軸上給飛彈一個速度。

(Velocity)速度是instantiatedProjectile的一個屬性。我們怎么知道的呢?因為instantiatedProjectile是剛體的一種,如果我們看看API手冊,我們就會知道速度是剛體的屬性中的一種。同時也看看剛體的其它屬性。要設置速度,我們就必須在各個軸向上設定數值。但還有個小問題。3D空間中的物體一般使用兩種坐標模型:本地坐標系和世界坐標系。在本地坐標系中,物體的軸向只與物體本身有關。在世界坐標系中,軸向是絕對的,例如:向上,對所有物體來講向上的方向都是一樣的。

Rigidbody.Vellocity剛體物體速度必須使用世界坐標系。因此,定義速度時,需要把本地坐標系中的Z軸(朝前的方向)向轉換成世界坐標系中的相應方向。可以用函數transform.TransformDirection,它有三個向量作為自變量。變量speed也應該定義成外部變量,便于后面在編輯器中直接調節(jié)數值。

最后,我們要關閉飛彈與游戲角色之間的碰撞。如果不這樣做的話,飛彈產生的時候就可能與角色發(fā)生碰撞。可以在API手冊IgnoreCollision下查詢詳細信息。

MissileLauncher.js全部完整代碼如下:

把腳本MissileLauncher賦予FPS控制器中的發(fā)射器。在層級面板中點擊發(fā)射器,檢查一下參數面板下面是否顯示了MissileLauncher script。

先前創(chuàng)建的飛彈的預制物體還沒有與腳本中的變量projectile創(chuàng)建關聯,我們需要在編輯器中創(chuàng)建一下。變量projectile只能與剛體關聯,因此,首先我們要賦予飛彈一個Rigidbody。

工程面板中點擊飛彈,然后從主菜單欄選擇Components;PhysicsRigidbody。這樣將會給我們想開火發(fā)射的飛彈一個剛體屬性。我們必須確保想在游戲中發(fā)射的物體類型與腳本中外部變量要求的物體類型是同一類型的物體。

創(chuàng)建飛彈與腳本中變量projectile的鏈接。首先在層級面板中點擊發(fā)射器,然后把飛彈的預制物體從工程面板中拖拽放置在發(fā)射器參數面板中MissileLauncher script部分上。

運行游戲的話,你會發(fā)現點擊開火鍵可以發(fā)出一個受重力影響的小球了。

飛彈爆炸

下面,當飛彈與其他物體發(fā)生碰撞時,增加一個爆炸效果。要實現這個效果,我們要編寫一段新腳本賦予飛彈。

創(chuàng)建一個新腳本,命名為Projectile。拖放到工程面板的WeaponScripts文件夾下。

那么我們想要腳本Projectile實現什么樣的效果呢?我們要檢測飛彈是否發(fā)生碰撞,然后在碰撞點產生一個爆炸效果。代碼如下:

函數OnCollisionEnter內的程序代碼的作用是計算被賦予腳本的物體是否與其他物體發(fā)生碰撞。

在函數OnCollisionEnter中我們主要是要實現在3D空間中飛彈發(fā)生碰撞的點產生一個新爆炸。那么在何處了碰撞的呢?函數OnCollisionEnter就有個記錄這個信息的功能。碰撞發(fā)生的點的信息儲存在變量ContactPoint中。

這里我們使用函數Instantiate來創(chuàng)建一個爆炸。我們已經知道函數instatiate有三個參數:(1)產生的物體(2)物體的3D空間位置

(3)物體的旋轉。

第一個參數,后面我們將會賦給一個帶粒子系統(tǒng)的游戲物體。同時我們還想通過編輯器來實現這個功能,所以我們把變量設置為外部變量。

第二個參數,爆炸產生的點的位置,就是碰撞發(fā)生的位置。

第三個參數,爆炸旋轉的設置,需要解釋一下。我們需要爆炸體的Y軸方向與飛彈和其他物體發(fā)生碰撞的那個表面的法線方向一致。這就是說如果是墻面那么爆炸就面向外,如果是地板就朝上。那么實際上我們就是要使爆炸體在本地坐標系的Y軸與飛彈與之碰撞的物體的表面法線方向(世界坐標系)一致。

最后,我們要讓飛彈碰撞后就從游戲中消失,通過函數Destroy()實現,它的參數是gameObject(gameObject代表被賦予這個腳本的物體)。

Projectile.js全部代碼如下:

把腳本賦予飛彈預制物體(Missile prefab)。

下面我們要創(chuàng)建飛彈發(fā)生碰撞時所產生爆炸的爆炸效果物體。

首先,創(chuàng)建一個新的預制物體(命名為Explosion)用來存放爆炸效果資源。

標準資源包中(standard asset)有個不錯的爆炸預制物體,粒子系統(tǒng)和燈光都設置好了。把這個爆炸預制物體(在Standard Assets/Particles/explosion中)拖放到層級面板。

調節(jié)這個爆炸效果的各個參數直到你覺得滿意,然后把它從層級面板中拖放到工程面板中的爆炸預制物體(Explosion Prefab)中。

現在把爆炸配置給飛彈:

點選飛彈預制物體(Missile Prefab),在參數面板Explosion變量欄,拖放工程面板中的爆炸到上面。

定義爆炸的行為

下面我們要再創(chuàng)建一個腳本來定義爆炸自身的特性。

創(chuàng)建一個新的腳本-Explosion,放在Weapons文件夾中,雙擊腳本進行編輯。

腳本中另一個常用函數稱為Start()。當它配置給的物體是在游戲中產生的時候,函數Start()中的代碼只被執(zhí)行一次。我們要實現的效果就是在一定時間后,在游戲中刪除爆炸。我們通過函數Destroy()的第二個參數實現,它的作用是定義執(zhí)行刪除前的時間長度。

變量explosionTime設置成外部變量,方便調節(jié)。

新建腳本插入以上代碼時,要刪除函數Update()。

把腳本Explosion賦予給爆炸預制物體。

音效

目前的游戲世界太安靜了,讓我們給爆炸效果增加點音效。

首先,給爆炸預制(Prefab)添加一段音頻。

給爆炸添加音效前,我們首先要添加一個音源部件(Audio Source),在主菜單點擊Component—Audio—Audio Source。你會發(fā)現音源部件有一個Audio Clip的屬性。

把“RocketLauncherImpact”音效添加給爆炸預制體的AudioClip外部變量。Unity支持多種音頻格式。

運行游戲,發(fā)射飛彈的時候就有聲音了!

添加圖形界面

下面我們來添加GUI,有點像頭部顯示設備(HUD)。我們要做的GUI非常簡單,就一個準星。

添加一個準星:

工程欄中創(chuàng)建一個GUI的文件夾。

創(chuàng)建一個新腳本,命名為“準星”(Crosshair),拖到GUI文件夾。

Crosshair中寫入下面的腳本:

首先我們設定了兩個變量。第一個變量是定義我們將要用可選的方式來選擇圖形紋理。第二個變量定義了一個方形區(qū)間,它是圖形紋理在屏幕上的位置范圍。

在start( ) 中函數用來設定圖形紋理在屏幕上的位置。函數中,有四個參數,用來定義方形區(qū)域的大小和位置。第一個參數定義了方形區(qū)域的左邊框,第二個是底邊框,第三和第四個參數定義了寬和高。

OnGUI( )函數中,使用GUI類程序來讓圖形顯示在屏幕上。DrawTexture( )函數的參數position和crosshairTexture將使準星顯示在屏幕的中央位置。

保存腳本。

創(chuàng)建一個新的空物體,命名為“GUI”。

把腳本“Crosshair”賦予給GUI物體。

點選GUI物體,把在文件夾Texturelaim下的欲使用的圖形拖放到參數面板變量Crosshair Texture中。

運行游戲,屏幕中就會有準星顯示了。

物理特效:

現在,我們想要游戲中的物體效果越真實越好,這是通過添加物理特效實現的。在這一節(jié)中,我們將在環(huán)境中添加一些物體,他們能被飛彈擊中后有相應的反應。首先有幾個新概念要解釋下。

校正(Update)

先前,我們在函數Update()中寫入代碼,這樣可以在每一幀都執(zhí)行其中的代碼。其中有個例子是檢測玩家點擊開火鍵。幀速并不是一個固定值,它是根據場景復雜度等因素來定的。各幀之間的時間差會導致不穩(wěn)定的物體反應。因此,如果想在場景中添加有物理反應的物體(剛體等),代碼就應該寫在函數FixedUpdate()中。Unity中deltaTime的值用來測定渲染兩個連續(xù)幀的所用時間。

一般而言,函數Update與FixedUpdate之間的區(qū)別如下:

Update()-其中的代碼通常用于角色行為、游戲邏輯等。這個函數中的deltaTime值并不是固定的。

FixedUpdate()-其中的代碼通常用于剛體物體(物理屬性的行為)。函數中deltaTime的值通常是固定的。

FixedUpdate函數被調用的頻率是主菜單中Edit-Project Settings-Time的FixedTimestep屬性確定的,當然也是可以更改的。第二個屬性Time Scale是讀取每秒的幀速和相應的倒數值。

技巧:定義FixedTimestep值時,要注意把握好一個平衡:值越小,物理效果越真實越好,但影響游戲運行速度。應該同時確保游戲運行速度和物理效果的真實性。

最后說一下yield,它相當于暫停當前正在執(zhí)行的函數。

回到游戲,我們想實現的效果:

使玩家可以發(fā)射飛彈(已經實現了)。

如果飛彈與其它剛體物體發(fā)生碰撞,檢測其范圍類是否有其它被賦予剛體屬性的物體。

對爆炸沖擊力范圍內的每個剛體物體,均給予一個upwards方向上的力,使它們對飛彈產生反應。

讓我們看看修改后的爆炸腳本(Explosion Javascript)

首先檢測下飛彈落點周圍是否有帶碰撞器的物體。函數Physics.OverlapSphere()有兩個參數:3D位置和半徑值,然后返回一組檢測到的在半徑內的碰撞器的數組。

一旦得到這些數組后,就會對每個對應碰撞器的剛體物體一個在特定方向上的力。

然后我們在飛彈的炸點處,向上的方向增加一個力(ExplosionPower)。但是,爆炸效果是隨著距離而遞減的,作用力大小不能在整個半徑內都一樣。圓周位置的剛體物體受到的作用力應該比炸點中心處小。函數把這種效果也考慮在內的。通過調節(jié)外部變量explosionPower和explosionRadius的值,可以較容易的得到想要的效果。

源碼編程器怎么玩其他小游戲的

1、首先啟動源碼編輯器,將原有的積木和角色全部刪除。

2、打開素材庫,將所需背景和角色增加進來。

3、進行排列好。

4、選中暫停這個角色,在舞臺中拖入下列積木

5、中開始按鈕角色,拖入下列積木即可。

用C++編寫的小游戲源代碼

五子棋的代碼:

#includeiostream

#includestdio.h

#includestdlib.h

#include time.h

using namespace std;

const int N=15;? ? ? ? ? ? ? ? ?//15*15的棋盤

const char ChessBoardflag = ' ';? ? ? ? ? //棋盤標志

const char flag1='o';? ? ? ? ? ? ? //玩家1或電腦的棋子標志

const char flag2='X';? ? ? ? ? ? ? //玩家2的棋子標志

typedef struct Coordinate? ? ? ? ? //坐標類

{?

int x;? ? ? ? ? ? ? ? ? ? ? ? ?//代表行

int y;? ? ? ? ? ? ? ? ? ? ? ? ?//代表列

}Coordinate;

class GoBang? ? ? ? ? ? ? ? ? ? //五子棋類

{

public:

GoBang()? ? ? ? ? ? ? ? //初始化

{

InitChessBoard();

}

void Play()? ? ? ? ? ? ? ?//下棋

{

Coordinate Pos1;? ? ? // 玩家1或電腦

Coordinate Pos2;? ? ? //玩家2

int n = 0;

while (1)

{

int mode = ChoiceMode();

while (1)

{

if (mode == 1)? ? ? ?//電腦vs玩家

{

ComputerChess(Pos1,flag1);? ? ?// 電腦下棋

if (GetVictory(Pos1, 0, flag1) == 1)? ? ?//0表示電腦,真表示獲勝

break;

PlayChess(Pos2, 2, flag2);? ? ?//玩家2下棋

if (GetVictory(Pos2, 2, flag2))? ? ?//2表示玩家2

break;

}

else? ? ? ? ? ? //玩家1vs玩家2

{

PlayChess(Pos1, 1, flag1);? ? ?// 玩家1下棋

if (GetVictory(Pos1, 1, flag1))? ? ? //1表示玩家1

break;

PlayChess(Pos2, 2, flag2);? ? ?//玩家2下棋

if (GetVictory(Pos2, 2, flag2))? //2表示玩家2

break;

}

}

cout "***再來一局***" endl;

cout "y or n :";

char c = 'y';

cin c;

if (c == 'n')

break;

}? ? ?

}

protected:

int ChoiceMode()? ? ? ? ? ?//選擇模式

{

int i = 0;

system("cls");? ? ? ? //系統(tǒng)調用,清屏

InitChessBoard();? ? ? ?//重新初始化棋盤

cout "***0、退出? 1、電腦vs玩家? 2、玩家vs玩家***" endl;

while (1)

{

cout "請選擇:";

cin i;

if (i == 0)? ? ? ? ?//選擇0退出

exit(1);

if (i == 1 || i == 2)

return i;

cout "輸入不合法" endl;

}

}

void InitChessBoard()? ? ? //初始化棋盤

{

for (int i = 0; i N + 1; ++i)? ?

{

for (int j = 0; j N + 1; ++j)

{

_ChessBoard[i][j] = ChessBoardflag;

}

}

}

void PrintChessBoard()? ? //打印棋盤,這個函數可以自己調整

{

system("cls");? ? ? ? ? ? ? ? //系統(tǒng)調用,清空屏幕

for (int i = 0; i N+1; ++i)

{

for (int j = 0; j N+1; ++j)

{

if (i == 0)? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?//打印列數字

{

if (j!=0)

printf("%d? ", j);

else

printf("? ?");

}

else if (j == 0)? ? ? ? ? ? ? ? //打印行數字

printf("%2d ", i);

else

{

if (i N+1)

{

printf("%c |",_ChessBoard[i][j]);

}

}

}

cout endl;

cout "? ?";

for (int m = 0; m N; m++)

{

printf("--|");

}

cout endl;

}

}

void PlayChess(Coordinate pos, int player, int flag)? ? ? ?//玩家下棋

{

PrintChessBoard();? ? ? ? ?//打印棋盤

while (1)

{

printf("玩家%d輸入坐標:", player);

cin pos.x pos.y;

if (JudgeValue(pos) == 1)? ? ? ? ? //坐標合法

break;

cout "坐標不合法,重新輸入" endl;

}

_ChessBoard[pos.x][pos.y] = flag;

}

void ComputerChess(Coordinate pos, char flag)? ? ? ?//電腦下棋

{

PrintChessBoard();? ? ? ? ?//打印棋盤

int x = 0;

int y = 0;

while (1)

{

x = (rand() % N) + 1;? ? ? //產生1~N的隨機數

srand((unsigned int) time(NULL));

y = (rand() % N) + 1;? ? ?//產生1~N的隨機數

srand((unsigned int) time(NULL));

if (_ChessBoard[x][y] == ChessBoardflag)? ? ? //如果這個位置是空的,也就是沒有棋子

break;

}

pos.x = x;

pos.y = y;

_ChessBoard[pos.x][pos.y] = flag;

}

int JudgeValue(const Coordinate pos)? ? ? ?//判斷輸入坐標是不是合法

{

if (pos.x 0 pos.x = Npos.y 0 pos.y = N)

{

if (_ChessBoard[pos.x][pos.y] == ChessBoardflag)

{

return 1;? ? //合法

}

}

return 0;? ? ? ? //非法

}

int JudgeVictory(Coordinate pos, char flag)? ? ? ? ? ?//判斷有沒有人勝負(底層判斷)

{

int begin = 0;

int end = 0;

int begin1 = 0;

int end1 = 0;

//判斷行是否滿足條件

(pos.y - 4) 0 ? begin = (pos.y - 4) : begin = 1;

(pos.y + 4) N ? end = N : end = (pos.y + 4);

for (int i = pos.x, j = begin; j + 4 = end; j++)

{

if (_ChessBoard[i][j] == flag_ChessBoard[i][j + 1] == flag

_ChessBoard[i][j + 2] == flag_ChessBoard[i][j + 3] == flag

_ChessBoard[i][j + 4] == flag)

return 1;

}

//判斷列是否滿足條件

(pos.x - 4) 0 ? begin = (pos.x - 4) : begin = 1;

(pos.x + 4) N ? end = N : end = (pos.x + 4);

for (int j = pos.y, i = begin; i + 4 = end; i++)

{

if (_ChessBoard[i][j] == flag_ChessBoard[i + 1][j] == flag

_ChessBoard[i + 2][j] == flag_ChessBoard[i + 3][j] == flag

_ChessBoard[i + 4][j] == flag)

return 1;

}

int len = 0;

//判斷主對角線是否滿足條件

pos.x pos.y ? len = pos.y - 1 : len = pos.x - 1;

if (len 4)

len = 4;

begin = pos.x - len;? ? ? ?//橫坐標的起始位置

begin1 = pos.y - len;? ? ? //縱坐標的起始位置

pos.x pos.y ? len = (N - pos.x) : len = (N - pos.y);

if (len4)

len = 4;

end = pos.x + len;? ? ? ?//橫坐標的結束位置

end1 = pos.y + len;? ? ? //縱坐標的結束位置

for (int i = begin, j = begin1; (i + 4 = end) (j + 4 = end1); ++i, ++j)

{

if (_ChessBoard[i][j] == flag_ChessBoard[i + 1][j + 1] == flag

_ChessBoard[i + 2][j + 2] == flag_ChessBoard[i + 3][j + 3] == flag

_ChessBoard[i + 4][j + 4] == flag)

return 1;

}

//判斷副對角線是否滿足條件

(pos.x - 1) (N - pos.y) ? len = (N - pos.y) : len = pos.x - 1;

if (len 4)

len = 4;

begin = pos.x - len;? ? ? ?//橫坐標的起始位置

begin1 = pos.y + len;? ? ? //縱坐標的起始位置

(N - pos.x) (pos.y - 1) ? len = (pos.y - 1) : len = (N - pos.x);

if (len4)

len = 4;

end = pos.x + len;? ? ? ?//橫坐標的結束位置

end1 = pos.y - len;? ? ? //縱坐標的結束位置

for (int i = begin, j = begin1; (i + 4 = end) (j - 4 = end1); ++i, --j)

{

if (_ChessBoard[i][j] == flag_ChessBoard[i + 1][j - 1] == flag

_ChessBoard[i + 2][j - 2] == flag_ChessBoard[i + 3][j - 3] == flag

_ChessBoard[i + 4][j - 4] == flag)

return 1;

}

for (int i = 1; i N + 1; ++i)? ? ? ? ? ?//棋盤有沒有下滿

{

for (int j =1; j N + 1; ++j)

{

if (_ChessBoard[i][j] == ChessBoardflag)

return 0;? ? ? ? ? ? ? ? ? ? ? //0表示棋盤沒滿

}

}

return -1;? ? ? //和棋

}

bool GetVictory(Coordinate pos, int player, int flag)? ?//對JudgeVictory的一層封裝,得到具體那個玩家獲勝

{

int n = JudgeVictory(pos, flag);? ?//判斷有沒有人獲勝

if (n != 0)? ? ? ? ? ? ? ? ? ? //有人獲勝,0表示沒有人獲勝

{

PrintChessBoard();

if (n == 1)? ? ? ? ? ? ? ? //有玩家贏棋

{

if (player == 0)? ? ?//0表示電腦獲勝,1表示玩家1,2表示玩家2

printf("***電腦獲勝***\n");

else

printf("***恭喜玩家%d獲勝***\n", player);

}

else

printf("***雙方和棋***\n");

return true;? ? ? //已經有人獲勝

}

return false;? ?//沒有人獲勝

}

private:

char _ChessBoard[N+1][N+1];? ?

};

擴展資料:

設計思路

1、進行問題分析與設計,計劃實現的功能為,開局選擇人機或雙人對戰(zhàn),確定之后比賽開始。

2、比賽結束后初始化棋盤,詢問是否繼續(xù)比賽或退出,后續(xù)可加入復盤、悔棋等功能。

3、整個過程中,涉及到了棋子和棋盤兩種對象,同時要加上人機對弈時的AI對象,即涉及到三個對象。

如何使用construct2制作射擊小游戲

你可以使用官方的模塊(template)。選擇shooting games template來參考,他會給你一個簡單的游戲編程和畫面,過后可以自己修改。

跪求用C++語言編寫的小游戲的源代碼

像素射擊:int anim abc_fade_in 0x7f010001

int anim abc_fade_out 0x7f010002

int anim abc_grow_fade_in_from_bottom 0x7f010003

int anim abc_popup_enter 0x7f010004

int anim abc_popup_exit 0x7f010005

int anim abc_shrink_fade_out_from_bottom 0x7f010006

int anim abc_slide_in_bottom 0x7f010007

int anim abc_slide_in_top 0x7f010008

int anim abc_slide_out_bottom 0x7f010009

int anim abc_slide_out_top 0x7f01000a

int anim abc_tooltip_enter 0x7f01000b

int anim abc_tooltip_exit 0x7f01000c

int attr actionBarDivider 0x7f040001

int attr actionBarItemBackground 0x7f040002

int attr actionBarPopupTheme 0x7f040003

int attr actionBarSize 0x7f040004

int attr actionBarSplitStyle 0x7f040005

int attr actionBarStyle 0x7f040006

int attr actionBarTabBarStyle 0x7f040007

int attr actionBarTabStyle 0x7f040008

int attr actionBarTabTextStyle 0x7f040009

int attr actionBarTheme 0x7f04000a

int attr actionBarWidgetTheme 0x7f04000b

int attr actionButtonStyle 0x7f04000c

int attr actionDropDownStyle 0x7f04000d

int attr actionLayout 0x7f04000e

int attr actionMenuTextAppearance 0x7f04000f

int attr actionMenuTextColor 0x7f040010

int attr actionModeBackground 0x7f040011

int attr actionModeCloseButtonStyle 0x7f040012

int attr actionModeCloseDrawable 0x7f040013

int attr actionModeCopyDrawable 0x7f040014

int attr actionModeCutDrawable 0x7f040015

int attr actionModeFindDrawable 0x7f040016

int attr actionModePasteDrawable 0x7f040017

int attr actionModePopupWindowStyle 0x7f040018

int attr actionModeSelectAllDrawable 0x7f040019

int attr actionModeShareDrawable 0x7f04001a

int attr actionModeSplitBackground 0x7f04001b

int attr actionModeStyle 0x7f04001c

int attr actionModeWebSearchDrawable 0x7f04001d

int attr actionOverflowButtonStyle 0x7f04001e

int attr actionOverflowMenuStyle 0x7f04001f

int attr actionProviderClass 0x7f040020

int attr actionViewClass 0x7f040021

int attr activityChooserViewStyle 0x7f040022

int attr alertDialogButtonGroupStyle 0x7f040023

int attr alertDialogCenterButtons 0x7f040024

int attr alertDialogStyle 0x7f040025

int attr alertDialogTheme 0x7f040026

int attr allowStacking 0x7f040027

int attr alpha 0x7f040028

int attr alphabeticModifiers 0x7f040029

int attr arrowHeadLength 0x7f04002a

int attr arrowShaftLength 0x7f04002b

int attr autoCompleteTextViewStyle 0x7f04002c

int attr autoSizeMaxTextSize 0x7f04002d

int attr autoSizeMinTextSize 0x7f04002e

int attr autoSizePresetSizes 0x7f04002f

int attr autoSizeStepGranularity 0x7f040030

int attr autoSizeTextType 0x7f040031

int attr background 0x7f040032

int attr backgroundSplit 0x7f040033

int attr backgroundStacked 0x7f040034

int attr backgroundTint 0x7f040035

int attr backgroundTintMode 0x7f040036

int attr barLength 0x7f040037

int attr borderlessButtonStyle 0x7f040038

int attr buttonBarButtonStyle 0x7f040039

int attr buttonBarNegativeButtonStyle 0x7f04003a

int attr buttonBarNeutralButtonStyle 0x7f04003b

int attr buttonBarPositiveButtonStyle 0x7f04003c

int attr buttonBarStyle 0x7f04003d

int attr buttonGravity 0x7f04003e

int attr buttonIconDimen 0x7f04003f

int attr buttonPanelSideLayout 0x7f040040

int attr buttonStyle 0x7f040041

int attr buttonStyleSmall 0x7f040042

int attr buttonTint 0x7f040043

int attr buttonTintMode 0x7f040044

int attr checkboxStyle 0x7f040045

int attr checkedTextViewStyle 0x7f040046

int attr closeIcon 0x7f040047

int attr closeItemLayout 0x7f040048

int attr collapseContentDescription 0x7f040049

int attr collapseIcon 0x7f04004a

int attr color 0x7f04004b

int attr colorAccent 0x7f04004c

int attr colorBackgroundFloating 0x7f04004d

int attr colorButtonNormal 0x7f04004e

int attr colorControlActivated 0x7f04004f

int attr colorControlHighlight 0x7f040050

int attr colorControlNormal 0x7f040051

int attr colorError 0x7f040052

int attr colorPrimary 0x7f040053

int attr colorPrimaryDark 0x7f040054

int attr colorSwitchThumbNormal 0x7f040055

int attr commitIcon 0x7f040056

int attr contentDescription 0x7f040057

int attr contentInsetEnd 0x7f040058

int attr contentInsetEndWithActions 0x7f040059

int attr contentInsetLeft 0x7f04005a

int attr contentInsetRight 0x7f04005b

int attr contentInsetStart 0x7f04005c

int attr contentInsetStartWithNavigation 0x7f04005d

int attr controlBackground 0x7f04005e

int attr coordinatorLayoutStyle 0x7f04005f

int attr customNavigationLayout 0x7f040060

int attr defaultQueryHint 0x7f040061

int attr dialogCornerRadius 0x7f040062

int attr dialogPreferredPadding 0x7f040063

int attr dialogTheme 0x7f040064

int attr displayOptions 0x7f040065

int attr divider 0x7f040066

int attr dividerHorizontal 0x7f040067

int attr dividerPadding 0x7f040068

int attr dividerVertical 0x7f040069

int attr drawableSize 0x7f04006a

int attr drawerArrowStyle 0x7f04006b

int attr dropDownListViewStyle 0x7f04006c

int attr dropdownListPreferredItemHeight 0x7f04006d

int attr editTextBackground 0x7f04006e

int attr editTextColor 0x7f04006f

int attr editTextStyle 0x7f040070

int attr elevation 0x7f040071

int attr expandActivityOverflowButtonDrawable 0x7f040072

int attr firstBaselineToTopHeight 0x7f040073

int attr font 0x7f040074

int attr fontFamily 0x7f040075

int attr fontProviderAuthority 0x7f040076

int attr fontProviderCerts 0x7f040077

int attr fontProviderFetchStrategy 0x7f040078

int attr fontProviderFetchTimeout 0x7f040079

int attr fontProviderPackage 0x7f04007a

int attr fontProviderQuery 0x7f04007b

int attr fontStyle 0x7f04007c

int attr fontVariationSettings 0x7f04007d

int attr fontWeight 0x7f04007e

int attr gapBetweenBars 0x7f04007f

int attr goIcon 0x7f040080

int attr height 0x7f040081

int attr hideOnContentScroll 0x7f040082

int attr homeAsUpIndicator 0x7f040083

int attr homeLayout 0x7f040084

int attr icon 0x7f040085

int attr iconTint 0x7f040086

int attr iconTintMode 0x7f040087

int attr iconifiedByDefault 0x7f040088

int attr imageButtonStyle 0x7f040089

int attr indeterminateProgressStyle 0x7f04008a

int attr initialActivityCount 0x7f04008b

int attr isLightTheme 0x7f04008c

int attr itemPadding 0x7f04008d

int attr keylines 0x7f04008e

int attr lastBaselineToBottomHeight 0x7f04008f

int attr layout 0x7f040090

int attr layout_anchor 0x7f040091

int attr layout_anchorGravity 0x7f040092

int attr layout_behavior 0x7f040093

int attr layout_dodgeInsetEdges 0x7f040094

int attr layout_insetEdge 0x7f040095

int attr layout_keyline 0x7f040096

int attr lineHeight 0x7f040097

int attr listChoiceBackgroundIndicator 0x7f040098

int attr listDividerAlertDialog 0x7f040099

int attr listItemLayout 0x7f04009a

int attr listLayout 0x7f04009b

int attr listMenuViewStyle 0x7f04009c

int attr listPopupWindowStyle 0x7f04009d

int attr listPreferredItemHeight 0x7f04009e

int attr listPreferredItemHeightLarge 0x7f04009f

int attr listPreferredItemHeightSmall 0x7f0400a0

int attr listPreferredItemPaddingLeft 0x7f0400a1

int attr listPreferredItemPaddingRight 0x7f0400a2

int attr logo 0x7f0400a3

int attr logoDescription 0x7f0400a4

int attr maxButtonHeight 0x7f0400a5

int attr measureWithLargestChild 0x7f0400a6

int attr multiChoiceItemLayout 0x7f0400a7

int attr navigationContentDescription 0x7f0400a8

int attr navigationIcon 0x7f0400a9

int attr navigationMode 0x7f0400aa

int attr numericModifiers 0x7f0400ab

int attr overlapAnchor 0x7f0400ac

int attr paddingBottomNoButtons 0x7f0400ad

int attr paddingEnd 0x7f0400ae

int attr paddingStart 0x7f0400af

int attr paddingTopNoTitle 0x7f0400b0

int attr panelBackground 0x7f0400b1

int attr panelMenuListTheme 0x7f0400b2

int attr panelMenuListWidth 0x7f0400b3

int attr popupMenuStyle 0x7f0400b4

int attr popupTheme 0x7f0400b5

int attr popupWindowStyle 0x7f0400b6

int attr preserveIconSpacing 0x7f0400b7

int attr progressBarPadding 0x7f0400b8

int attr progressBarStyle 0x7f0400b9

int attr queryBackground 0x7f0400ba

int attr queryHint 0x7f0400bb

int attr radioButtonStyle 0x7f0400bc

int attr ratingBarStyle 0x7f0400bd

int attr ratingBarStyleIndicator 0x7f0400be

int attr ratingBarStyleSmall 0x7f0400bf

int attr searchHintIcon 0x7f0400c0

int attr searchIcon 0x7f0400c1

int attr searchViewStyle 0x7f0400c2

int attr seekBarStyle 0x7f0400c3

int attr selectableItemBackground 0x7f0400c4

int attr selectableItemBackgroundBorderless 0x7f0400c5

int attr showAsAction 0x7f0400c6

int attr showDividers 0x7f0400c7

int attr showText 0x7f0400c8

int attr showTitle 0x7f0400c9

int attr singleChoiceItemLayout 0x7f0400ca

int attr spinBars 0x7f0400cb

int attr spinnerDropDownItemStyle 0x7f0400cc

int attr spinnerStyle 0x7f0400cd

int attr splitTrack 0x7f0400ce

int attr srcCompat 0x7f0400cf

int attr state_above_anchor 0x7f0400d0

int attr statusBarBackground 0x7f0400d1

int attr subMenuArrow 0x7f0400d2

int attr submitBackground 0x7f0400d3

int attr subtitle 0x7f0400d4

int attr subtitleTextAppearance 0x7f0400d5

int attr subtitleTextColor 0x7f0400d6

int attr subtitleTextStyle 0x7f0400d7

int attr suggestionRowLayout 0x7f0400d8

int attr switchMinWidth 0x7f0400d9

int attr switchPadding 0x7f0400da

int attr switchStyle 0x7f0400db

int attr switchTextAppearance 0x7f0400dc

int attr textAllCaps 0x7f0400dd

int attr textAppearanceLargePopupMenu 0x7f0400de

int attr textAppearanceListItem 0x7f0400df

int attr textAppearanceListItemSecondary 0x7f0400e0

int attr textAppearanceListItemSmall 0x7f0400e1

int attr textAppearancePopupMenuHeader 0x7f0400e2

int attr textAppearanceSearchResultSubtitle 0x7f0400e3

int attr textAppearanceSearchResultTitle 0x7f0400e4

int attr textAppearanceSmallPopupMenu 0x7f0400e5

int attr textColorAlertDialogListItem 0x7f0400e6

int attr textColorSearchUrl 0x7f0400e7

int attr theme 0x7f0400e8

int attr thickness 0x7f0400e9

int attr thumbTextPadding 0x7f0400ea

int attr thumbTint 0x7f0400eb

int attr thumbTintMode 0x7f0400ec

int attr tickMark 0x7f0400ed

int attr tickMarkTint 0x7f0400ee

int attr tickMarkTintMode 0x7f0400ef

int attr tint 0x7f0400f0

int attr tintMode 0x7f0400f1

int attr title 0x7f0400f2

int attr titleMargin 0x7f0400f3

int attr titleMarginBottom 0x7f0400f4

int attr titleMarginEnd 0x7f0400f5

int attr titleMarginStart 0x7f0400f6

int attr titleMarginTop 0x7f0400f7

int attr titleMargins 0x7f0400f8

int attr titleTextAppearance 0x7f0400f9

int attr titleTextColor 0x7f

關于用源碼編輯器制作射擊小游戲和源碼編輯器怎么玩的介紹到此就結束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關注本站。

掃描二維碼推送至手機訪問。

版權聲明:本文由飛速云SEO網絡優(yōu)化推廣發(fā)布,如需轉載請注明出處。

本文鏈接:http://www.smallwaterjetsystem.com/post/8503.html

分享給朋友:

“用源碼編輯器制作射擊小游戲(源碼編輯器怎么玩)” 的相關文章

寧波軟件開發(fā)(寧波軟件開發(fā)公司報價)

寧波軟件開發(fā)(寧波軟件開發(fā)公司報價)

今天給各位分享寧波軟件開發(fā)的知識,其中也會對寧波軟件開發(fā)公司報價進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、寧波金唐軟件有限公司是外包嗎 2、寧波有哪些較有實力的 軟件公司?。?3、寧波銀行軟件開發(fā)地址 4、軟件開發(fā)項目,寧波技術開發(fā)人員,每...

軟件開發(fā)工程師(軟件開發(fā)工程師就業(yè)和發(fā)展前景)

軟件開發(fā)工程師(軟件開發(fā)工程師就業(yè)和發(fā)展前景)

今天給各位分享軟件開發(fā)工程師的知識,其中也會對軟件開發(fā)工程師就業(yè)和發(fā)展前景進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、軟件開發(fā)工程師是什么? 2、軟件開發(fā)工程師是干什么的 3、什么是軟件開發(fā)工程師 軟件開發(fā)工程師是什么? 軟件工程師(Softw...

c反應蛋白高說明什么(c反應蛋白高說明什么新冠感染后)

c反應蛋白高說明什么(c反應蛋白高說明什么新冠感染后)

本篇文章給大家談談c反應蛋白高說明什么,以及c反應蛋白高說明什么新冠感染后對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、c反應蛋白高說明什么 2、c反應蛋白偏高說明什么 3、c-反應蛋白高是怎么回事 4、超敏c反應蛋白偏高說明什么 c反應蛋白高說明什么 C...

php手游源碼平臺(php頁游源碼)

php手游源碼平臺(php頁游源碼)

今天給各位分享php手游源碼平臺的知識,其中也會對php頁游源碼進行解釋,如果能碰巧解決你現在面臨的問題,別忘了關注本站,現在開始吧!本文目錄一覽: 1、php網上商城系統(tǒng)源碼求大神推薦一下不要太貴的 2、好的免費PHP源碼下載 3、php網站源碼 asp網站源碼 哪個好 4、怎么才能安...

數字藏品怎么交易賺錢(藏品怎樣交易)

數字藏品怎么交易賺錢(藏品怎樣交易)

本篇文章給大家談談數字藏品怎么交易賺錢,以及藏品怎樣交易對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、數字藏品怎么賣掉賺錢,齊白石的五蝦圖數字藏品 2、數字藏品怎么賺錢 3、數字藏品都能交易嗎? 4、數字藏品在哪里交易 5、老弟問我數字藏品買賣賺錢嗎...

房頂裝修效果圖大全(室內裝修房頂效果圖大全)

房頂裝修效果圖大全(室內裝修房頂效果圖大全)

本篇文章給大家談談房頂裝修效果圖大全,以及室內裝修房頂效果圖大全對應的知識點,希望對各位有所幫助,不要忘了收藏本站喔。 本文目錄一覽: 1、木結構房頂想要隔熱,需要怎樣裝修? 2、裝修效果圖怎么做出來?裝修風格有哪些 3、樓中樓怎么裝修效果圖 4、頂樓房頂是尖的,怎么裝修? 5、房頂...