版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
網(wǎng)絡(luò)游戲開(kāi)發(fā)—四國(guó)軍棋第12頁(yè)共12頁(yè)網(wǎng)絡(luò)游戲開(kāi)發(fā)-四國(guó)軍棋摘要:利用網(wǎng)絡(luò)數(shù)據(jù)庫(kù)技術(shù),結(jié)合目前寬帶網(wǎng)大力建設(shè)的有利優(yōu)勢(shì),應(yīng)用ActiveServerPage技術(shù)和采用SQLServer2000數(shù)據(jù)庫(kù)系統(tǒng)組件來(lái)構(gòu)成軍棋數(shù)據(jù)庫(kù),結(jié)合VisualBasic6.0作為前臺(tái)開(kāi)發(fā)工具。我們開(kāi)發(fā)了基于C/S模式多用戶(hù)在線(xiàn)網(wǎng)絡(luò)對(duì)戰(zhàn)系統(tǒng)這一程序。它運(yùn)用方便、操作簡(jiǎn)單,效率很高。實(shí)現(xiàn)了在線(xiàn)對(duì)戰(zhàn)的基本部分,已具有用戶(hù)注冊(cè)、多用戶(hù)同時(shí)在線(xiàn)對(duì)戰(zhàn)、自主的選擇座位、時(shí)間控制。關(guān)鍵字:四國(guó)軍旗、網(wǎng)絡(luò)游戲、SQL-Server、ADO。Thenetworkgamedevelopment-fourarmychessesAbstract:Makesuseofthenetworkdatabasetechnique,combinesbreadthtotakethebeneficialadvantagethatthenetconstuctsstronglycurrently,applytheActiveServerPagetechniqueandadopttheSQLServer2000databasesystemmoduletoconstitutethesoldierchessdatabase,combinetheVisualBasic6.0Bethestagedevelopmenttool.Wedeveloppedanon-linenetworkaccordingtotheC/Smodemultiuserthisproceduretothewarsystem.Itsusageconvenience,operationsimple,theefficiencyisveryhigh.Carryouton-linetothebasicpartofthewars,havealreadyhaveinthemeantimecustomerregistration,multiuserison-linetothewars,independentchoiceseat,timecontrol.Keywords::Fourarmyensigns,networkgames,SQL-Servers,ADOs.
一、系統(tǒng)設(shè)計(jì)的相關(guān)原理該網(wǎng)絡(luò)游戲軟件主要采用VisualBasic6.0、SQLServer數(shù)據(jù)庫(kù)等技術(shù)和工具,整體設(shè)計(jì)遵循軟件工程的方法,經(jīng)過(guò)需求分析、總體設(shè)計(jì)、文檔和代碼的編制、模塊測(cè)試和系統(tǒng)實(shí)現(xiàn)幾個(gè)階段。二、需求分析要實(shí)現(xiàn)一個(gè)軟件系統(tǒng),首先應(yīng)該進(jìn)行需求分析,這樣才能令設(shè)計(jì)出的軟件滿(mǎn)足用戶(hù)的各項(xiàng)功能。下面就對(duì)網(wǎng)絡(luò)軍棋的設(shè)計(jì)進(jìn)行需求分析。2.1系統(tǒng)需要解決的主要問(wèn)題因?yàn)橥嫫迨怯刑囟ǖ膶?duì)象的,所以玩家進(jìn)入系統(tǒng)應(yīng)該進(jìn)行身份驗(yàn)證。玩家進(jìn)入游戲界面后,需要選擇要登陸了桌子以及座位,以及走棋功能。棋子所走位置是基于網(wǎng)絡(luò)環(huán)境,棋子的坐標(biāo)隨時(shí)應(yīng)該從服務(wù)器的數(shù)據(jù)庫(kù)中抽取棋子的坐標(biāo)值。這樣才能實(shí)現(xiàn)棋子動(dòng)態(tài)走動(dòng)的效果。此外,應(yīng)該能夠方便、快捷的進(jìn)行用戶(hù)進(jìn)行遠(yuǎn)程注冊(cè)。2.2系統(tǒng)應(yīng)該具備的基本功能用戶(hù)注冊(cè):用戶(hù)可以進(jìn)行注冊(cè),然后登錄。桌子的選擇:用戶(hù)可以隨意的選擇桌子以及座位號(hào),并對(duì)數(shù)據(jù)庫(kù)中的相關(guān)字段進(jìn)行添加數(shù)據(jù)走棋過(guò)程:系統(tǒng)會(huì)隨時(shí)記錄各個(gè)棋子所有的變動(dòng),以及玩家在此過(guò)程中于其他幾位的戰(zhàn)勝情況。2.3性能需求的要求系統(tǒng)運(yùn)行環(huán)境的要求:(1)硬件環(huán)境:1)服務(wù)器端處理器:Pentium166MHz內(nèi)存:256MB硬盤(pán)空間:20GB光驅(qū):40X以上顯卡:TNT2顯示適配器網(wǎng)絡(luò)配置:寬帶網(wǎng)絡(luò)2)客戶(hù)端處理器:Pentium166MHz內(nèi)存:256MB硬盤(pán)空間:20GB光驅(qū):40X以上顯卡:TNT2顯示適配器網(wǎng)絡(luò)配置:寬帶網(wǎng)絡(luò)(2)軟件環(huán)境:1)服務(wù)器端操作系統(tǒng):WindowsXP/Windows2000(個(gè)人版除外)網(wǎng)絡(luò)協(xié)議:TCP/IP數(shù)據(jù)庫(kù):SQLServer2000個(gè)人版編程語(yǔ)言:VisualBasic6.0企業(yè)版2)客戶(hù)端操作系統(tǒng):Windows98/2000/XP網(wǎng)絡(luò)協(xié)議:TCP/IP編程語(yǔ)言:VisualBasic6.0企業(yè)版三、系統(tǒng)的總體設(shè)置3.1系統(tǒng)功能的設(shè)計(jì)根據(jù)系統(tǒng)功能的要求,在四國(guó)軍棋分為三個(gè)模塊。即用戶(hù)注冊(cè)、實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)戰(zhàn)、玩家聊天??梢詫⑾到y(tǒng)分解成為幾個(gè)功能模塊來(lái)分別設(shè)計(jì),功能模塊間的關(guān)系如圖1所示。圖1功能模塊間的關(guān)系圖3.2詳細(xì)設(shè)計(jì)詳細(xì)設(shè)計(jì)是整個(gè)設(shè)計(jì)過(guò)程中,最重要的步驟之一。下面就分如下幾個(gè)部分對(duì)系統(tǒng)進(jìn)行詳細(xì)設(shè)計(jì):(1)棋盤(pán)界面的設(shè)計(jì)(2)數(shù)據(jù)庫(kù)及其表的設(shè)計(jì)(3)用戶(hù)注冊(cè)與登陸(4)功能模塊詳細(xì)設(shè)計(jì)(5)網(wǎng)絡(luò)游戲的模塊框圖3.2.1棋盤(pán)界面的設(shè)計(jì)在這次設(shè)計(jì)的過(guò)程中,遇到的第一個(gè)問(wèn)題是怎樣來(lái)制作軍棋的棋盤(pán).因?yàn)橐谧咂宓倪^(guò)程中確定每走一步棋子在棋盤(pán)上的位置.如果把棋盤(pán)作為一個(gè)整體的圖片家載到VB中,顯然就不能實(shí)現(xiàn)以上的功能.就此原因我們才采用了棋盤(pán)分割的方式,來(lái)逐漸的分割整個(gè)棋盤(pán).首先我們把整個(gè)棋盤(pán)劃分成五大布分。把以上的圖片家載到VB中,利用VB中的PictureClip控件將圖片分割成30份,也就是棋盤(pán)上棋盤(pán)點(diǎn)都是以個(gè)圖片。但是用PictureClip控件分割的圖片不會(huì)在運(yùn)行是顯示,因此需要Image控件結(jié)合才能實(shí)現(xiàn)圖片的分割,以及分割后的連接。如果認(rèn)為的安放Image控件的位置不僅麻煩,而且不精確。因此需要用程序來(lái)實(shí)現(xiàn)棋盤(pán)的合并。數(shù)據(jù)庫(kù)的設(shè)計(jì)1.專(zhuān)家數(shù)據(jù)庫(kù)的規(guī)劃(E-R圖)在軍棋數(shù)據(jù)庫(kù)中,“棋盤(pán)表”和“棋子表”是通過(guò)用戶(hù)按照走棋的規(guī)則來(lái)建立聯(lián)系;“用戶(hù)表”和“棋子表”是通過(guò)用戶(hù)所選擇的棋子來(lái)建立聯(lián)系。假定棋盤(pán)表包括:棋盤(pán)ID、坐標(biāo)X、坐標(biāo)Y、類(lèi)型、狀態(tài)、棋子ID、FrmX、FrmY。棋子表包括:棋子ID、級(jí)別、狀態(tài)、名稱(chēng)、坐標(biāo)X、坐標(biāo)Y、數(shù)組下標(biāo)、標(biāo)志。用戶(hù)表包括:用戶(hù)ID、密碼、積分、等級(jí)、桌子ID、坐位、內(nèi)容。數(shù)據(jù)庫(kù)的E-R圖如圖2:圖2數(shù)據(jù)庫(kù)的E-R圖3.3功能模塊詳細(xì)設(shè)計(jì)下面對(duì)各個(gè)功能模塊分別進(jìn)行詳細(xì)討論,具體情況見(jiàn)系統(tǒng)源程序。3.3.1用戶(hù)注冊(cè)模塊該模塊的功能是實(shí)現(xiàn)用戶(hù)遠(yuǎn)程注冊(cè)。用戶(hù)輸入想要注冊(cè)的用戶(hù)名和密碼,提交之后由系統(tǒng)判斷該用戶(hù)是否已經(jīng)存在,如果存在,就給出相應(yīng)信息,如果不存在,就把用戶(hù)輸入的用戶(hù)名和密碼寫(xiě)到數(shù)據(jù)庫(kù)中,完成注冊(cè)。3.3.2實(shí)現(xiàn)網(wǎng)絡(luò)對(duì)戰(zhàn)模塊1.用戶(hù)登錄該模塊的功能是實(shí)現(xiàn)用戶(hù)進(jìn)入系統(tǒng)。用戶(hù)只需要輸入已經(jīng)注冊(cè)過(guò)的用戶(hù)名及密碼。點(diǎn)擊登錄這時(shí)系統(tǒng)會(huì)自動(dòng)進(jìn)入數(shù)據(jù)庫(kù)中查找此用戶(hù)是否存在如果不存在那么就會(huì)給出相應(yīng)的信息,如果存在那么進(jìn)入游戲桌面。2.走棋過(guò)程玩家在游戲沒(méi)有開(kāi)始前,進(jìn)行棋盤(pán)布局的時(shí)候。怎樣判斷玩家對(duì)哪顆棋子進(jìn)行擺放。棋子是否可以放在這個(gè)位置。例如地雷要放在棋盤(pán)的最后兩排、軍旗要放在大本營(yíng)中、炸彈不能放在前兩排、行營(yíng)不可以放棋子。此問(wèn)題的解決的方法為:擺放棋子時(shí),只是根據(jù)棋子在棋盤(pán)上的位置來(lái)確定棋子的位置坐標(biāo),并對(duì)數(shù)據(jù)庫(kù)中棋子表進(jìn)行添加數(shù)據(jù)。此時(shí)棋子表中的數(shù)據(jù)并不影響棋子位置。這一點(diǎn)可以實(shí)現(xiàn)棋子的按放。判斷棋子放在哪個(gè)位置,要根據(jù)棋盤(pán)表中“棋子ID”進(jìn)行查詢(xún)來(lái)確定。開(kāi)局后,玩家的走棋規(guī)則,怎樣判斷棋子在棋盤(pán)上怎樣走,例如棋子是否可以沿這鐵路線(xiàn)多步走,還是一步一步的走。是否可以走到用戶(hù)想要到的地方,也就是在鐵路線(xiàn)上原地到目的地的途中是否有棋子,如果有就不能走動(dòng)。最后一行的棋子不能走多步,只能一步一步的移動(dòng)。解決方法為:利用SQL語(yǔ)句查詢(xún)的功能,來(lái)判斷用戶(hù)在走棋的這一路程是否有棋子存在。這樣就可以實(shí)現(xiàn)連續(xù)走棋的功能;利用要移動(dòng)的棋子棋盤(pán)表中記錄的坐標(biāo)字段X,Y于目的棋盤(pán)坐標(biāo)的字段進(jìn)行比較看它們的值是否相等或不等,來(lái)決定棋子的走的方向。當(dāng)玩家點(diǎn)擊第二下棋子是怎樣來(lái)判斷該棋子是敵方的,還是友方的,如果是敵方的要進(jìn)行吃棋子的過(guò)程,怎樣來(lái)判斷雙方棋子的大小,如果是地雷或是炸彈這樣才能讓雙方的棋子消失。怎樣判斷隔棋子吃子,如果隔著棋子就不能吃掉,如果沒(méi)有就可以吃掉。如果是友方的,就不做任何動(dòng)作。解決方法:在本程序中,應(yīng)用了一個(gè)全局變量ChairId來(lái)確定玩家登陸棋盤(pán)的位置及所用的棋子,這樣就判斷出敵我雙方。在棋子棋子表中有一個(gè)級(jí)別的字段,根據(jù)級(jí)別的大小來(lái)判斷雙方棋子的大小。判斷是否隔棋子吃子的方法和以上的判斷是否隔棋子走棋一樣選擇座位該模塊的功能是用來(lái)不斷的對(duì)數(shù)據(jù)庫(kù)中的數(shù)據(jù)進(jìn)行查詢(xún),來(lái)顯示所有玩家登錄的桌子,以及所有的座位。這樣別的用戶(hù)在登錄時(shí)可以很容易的找出哪個(gè)桌子哪個(gè)位置沒(méi)有用戶(hù),方便登錄。3.3.3聊天模塊該模塊的功能是用來(lái)方便用戶(hù)的和對(duì)手下棋的時(shí)候及時(shí)溝通便于切磋棋藝和消遣,本系統(tǒng)還可以根據(jù)用戶(hù)的愛(ài)好來(lái)選擇字體和顏色這樣用戶(hù)的心情也會(huì)愉悅。3.4四國(guó)軍棋的流程圖本程序的流程圖如圖3圖3數(shù)據(jù)流程圖根據(jù)系統(tǒng)總體設(shè)計(jì),首先系統(tǒng)要有一個(gè)登錄界面,用戶(hù)可以從該界面登錄進(jìn)入游戲。此外,這個(gè)界面上還應(yīng)該有一個(gè)用戶(hù)注冊(cè)的通道。在用戶(hù)正確輸入用戶(hù)名和密碼以后,接著應(yīng)該進(jìn)入棋桌選擇界面。在該界面上,用戶(hù)選擇加入哪個(gè)桌子,這個(gè)人機(jī)交互的過(guò)程是必不可少的。用戶(hù)確定桌子上的座位后,進(jìn)入游戲界面,并開(kāi)始進(jìn)行對(duì)自己棋盤(pán)上的棋子進(jìn)行布局。然后開(kāi)始網(wǎng)絡(luò)游戲?qū)?zhàn),只到確定勝負(fù)后才能算是一局結(jié)束。四、詳細(xì)設(shè)計(jì)4.1核心技術(shù)1(OLE-DB)用戶(hù)登陸在VB中不論使用那種數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)方法進(jìn)行數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn),訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的模型都是一樣的。數(shù)據(jù)訪(fǎng)問(wèn)的模型如圖ActiveX.exe.DLL數(shù)據(jù)源中間層ActiveX.exe.DLL數(shù)據(jù)源中間層遠(yuǎn)程數(shù)據(jù)訪(fǎng)問(wèn)接口數(shù)據(jù)庫(kù)客戶(hù)端ADO是ActiveXDataObject的縮寫(xiě),它是Microsoft數(shù)據(jù)庫(kù)應(yīng)用程序開(kāi)發(fā)的新接口,是微軟公司新的數(shù)據(jù)訪(fǎng)問(wèn)技術(shù)是建立在OLEDB之上的高層數(shù)據(jù)訪(fǎng)問(wèn)技術(shù)。ADO向VB程序員提供了很多好處,包括易于使用,熟悉的界面、高速度及交低的內(nèi)存占用。ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的基本流程如圖5連接數(shù)據(jù)庫(kù)關(guān)閉數(shù)據(jù)庫(kù)打開(kāi)連接操作數(shù)據(jù)庫(kù)連接數(shù)據(jù)庫(kù)關(guān)閉數(shù)據(jù)庫(kù)打開(kāi)連接操作數(shù)據(jù)庫(kù)圖5ADO訪(fǎng)問(wèn)數(shù)據(jù)庫(kù)的流程圖2圖片的分割在VB中有個(gè)PictureClip控件,它的作用是把一張倒入圖片,按PictureClip屬性中的行和列的值按數(shù)組的形式分成大小相等的幾份。這樣就可以把棋盤(pán)圖片利用PictureClipd的屬性分成大小相等的30份,那么每一份就是棋盤(pán)上的一點(diǎn)。這樣就可以確定棋子在棋盤(pán)上的坐標(biāo)值。PictureClip控件可以把加載到這個(gè)控件的圖片分成相等的幾份,但并不能在窗體運(yùn)行顯示出來(lái)。如果讓它顯示出來(lái),必須要和Image控件相結(jié)合的使用。應(yīng)該把PictureClip控件下的GraphicCell屬性的值傳給Image控件下的Picture屬性。例如:Image1.Picture=PictureClip.GraphicCell(i)。棋盤(pán)組合代碼:DimiAsIntegerDimX,Y,h,w,r,CX=ImagQPA(0).LeftY=ImagQPA(0).Toph=ImagQPA(0).Heightw=ImagQPA(0).WidthFori=1To29r=Int(i/5)C=iMod5ImagQPA(i).Left=X+w*CImagQPA(i).Top=Y+h*rNextiFori=0To29ImagQPA(i).Picture=PictureClipA.GraphicCell(i)Nexti3走棋規(guī)則走棋規(guī)則在本次設(shè)計(jì)中是一個(gè)難點(diǎn),也是一個(gè)重點(diǎn)。在這部分中大部分用戶(hù)的了數(shù)據(jù)庫(kù)中的數(shù)據(jù),也就是在次的程序代碼大部分是SQL程序。SQL語(yǔ)句中用到的表不只是一個(gè),有許多表之間進(jìn)行嵌套的查詢(xún)。核心代碼:QZSQL="select*from棋子表where數(shù)組下標(biāo)="+Str(MyIndex)SetQZRs=SqlDbase(QZCnStr,QZSQL)QPSQL="select*from棋盤(pán)表whereFrmX="+Str(ImagQPA(Index).Left)+"AndFrmY="+Str(ImagQPA(Index).Top)SetQPRs=SqlDbase(QZCnStr,QPSQL)QZRs!坐標(biāo)X=ImagQPA(Index).LeftQZRs!坐標(biāo)Y=ImagQPA(Index).TopQZRs.UpdateQPRs!狀態(tài)=1QPRs!棋子ID=MyIndexQPRs.Update六、系統(tǒng)的實(shí)現(xiàn)在進(jìn)行了整體設(shè)計(jì)以后,就開(kāi)始進(jìn)行詳細(xì)的設(shè)計(jì)及編碼工作。也就是設(shè)計(jì)文件和把他們有機(jī)地組織在一起實(shí)現(xiàn)所有功能。由于篇幅有限只抽取其中的實(shí)現(xiàn)數(shù)據(jù)庫(kù)連接的一段最基礎(chǔ)最重要的程序做為例子。PublicQZCnStrAsStringPublicFunctionSqlDbase(CnstrAsString,SqlstrAsString)AsRecordsetDimCnAsNewConnectionDimRsAsNewRecordsetCn.OpenCnstrRs.CursorLocation=adUseClientRs.OpenSqlstr,Cn,adOpenDynamic,adLockOpti
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年全球及中國(guó)機(jī)器人用立體攝像頭行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)油藏模擬軟件行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)電子保險(xiǎn)絲芯片行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球中低牌號(hào)無(wú)取向硅鋼行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)特殊需求三輪車(chē)行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)超精密非球面磨床行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025-2030全球軟件工程智能平臺(tái)行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025-2030全球1P儲(chǔ)能鋰電池行業(yè)調(diào)研及趨勢(shì)分析報(bào)告
- 2025年全球及中國(guó)漫畫(huà)書(shū)出版商行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 2025年全球及中國(guó)自動(dòng)血壓脈搏測(cè)試儀行業(yè)頭部企業(yè)市場(chǎng)占有率及排名調(diào)研報(bào)告
- 涉詐風(fēng)險(xiǎn)賬戶(hù)審查表
- 2023年大學(xué)英語(yǔ)四級(jí)考試模擬真題及答案
- 四年級(jí)數(shù)學(xué)上冊(cè)口算天天練4
- 蘇教版二年級(jí)數(shù)學(xué)寒假輔導(dǎo)提高班課件 第1講 眼花繚亂的數(shù)據(jù)(66張PPT)
- 水利水電工程監(jiān)理平行檢測(cè)表部分
- 分部分項(xiàng)工程質(zhì)量檢驗(yàn)計(jì)劃表
- 社區(qū)衛(wèi)生服務(wù)中心醫(yī)療服務(wù)推薦病-2023版1-4-10
- HY/T 266-2018外壓中空纖維超濾膜表面親水性的測(cè)試接觸角法
- 【英文原版小說(shuō)】the things they carried《負(fù)荷》
- 領(lǐng)導(dǎo)干部如何管理壓力與情緒課件
- 2022-2023年度神農(nóng)中華農(nóng)業(yè)科技獎(jiǎng)科研和科普類(lèi)推薦書(shū)和摘要表(樣本)
評(píng)論
0/150
提交評(píng)論