日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

钢七连实战C3-P2:项目源码结构 面向对象基础 堆分配

發(fā)布時(shí)間:2024/1/1 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 钢七连实战C3-P2:项目源码结构 面向对象基础 堆分配 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

鋼七連軟件培訓(xùn)

C3-P2 ?面向?qū)ο??第2節(jié)
1.怎樣閱讀一套項(xiàng)目源碼
2.面向?qū)ο蠡炯夹g(shù)
https://blog.csdn.net/weixin_42644456

一、通用的學(xué)習(xí)路線,解決辦法
學(xué)習(xí)資源:慕課,樣例代碼。
通用的解決辦法:查資料,分析設(shè)計(jì),編碼,調(diào)試

大學(xué)基礎(chǔ)課程和基本功的重要性。程序員,設(shè)計(jì)師,架構(gòu)師。

二、面向?qū)ο缶唧w知識(shí)
程序是打出來(lái)的。
不要發(fā)明一個(gè)項(xiàng)目,技術(shù)是通過(guò)閱讀學(xué)習(xí)的。
20%的講解,30%的案例閱讀,50%的編碼。

難點(diǎn)分析。初學(xué)者理解困難。當(dāng)學(xué)習(xí)了更多課程、有了更多積累之后,就能聽(tīng)懂。
老師做的多個(gè)中等案例:
https://blog.csdn.net/weixin_42644456/article/details/103092496
學(xué)生能讀懂多少,能做出多少,能不能做更好的。

Java難題的原理,是C/C++基礎(chǔ)知識(shí).

C3-P1:java的安裝、環(huán)境變量的含義,命令行的編譯和運(yùn)行。
C3-P1更正:程序文件:JavaGame.java
文件中的類名: public class JavaGame 和文件名一致。
? ?C3-P2:eclipse或者其他工具。
Java, eclipse都有大量安裝教程、配置教程。
Eclipse的版本(32/64)要和jdk匹配32位、64位.
Eclipse配置jdk路徑。
Window-- Preferences--搜索JDK: java/installed JRES 添加本機(jī)jdk路徑。
例如:C:\Program Files (x86)\Java\jdk1.7.0_60

eclipse編輯文本。由eclipse找到j(luò)dk,觸發(fā)java的編譯、運(yùn)行。如果是控制臺(tái)main, 把運(yùn)行結(jié)果輸出在eclipse的窗口上。

三、案例閱讀:
初級(jí)效果:LegendCarry0925_1 飛機(jī)大戰(zhàn)源碼

中等效果:LegendCarry0927飛機(jī)大戰(zhàn)源碼
游戲角色:飛機(jī)、敵機(jī)、子彈、BOSS
地圖:背景圖片。
游戲功能:多個(gè)關(guān)卡,BOSS1,BOSS2,...
多種運(yùn)動(dòng)方式:BOSS怎么動(dòng),飛機(jī)拐彎,子彈斜著飛,道具飄動(dòng)
游戲事件的觸發(fā),數(shù)據(jù)刷新:碰撞檢測(cè)


大二下學(xué)期:planegame_finalV2源碼
增加了數(shù)據(jù)庫(kù):用戶注冊(cè)、登錄,保存玩家生命值、得分等數(shù)據(jù)。
增加了設(shè)計(jì)模式:單件、工廠、備忘錄。適合于大一、大二初學(xué)者。大三、大四是否能改進(jìn)。

四、怎樣閱讀一套工程代碼:
學(xué)習(xí)目標(biāo):類是什么,答:封裝、繼承、多態(tài)。菜譜。科一。
學(xué)習(xí)目標(biāo):類怎樣組成了一個(gè)項(xiàng)目。做飯。科二、科三。
程序是打出來(lái)的:不是看會(huì)了菜譜,再做飯。是會(huì)做飯以后,理解了菜譜。

語(yǔ)言無(wú)關(guān)(c++,java, javascript, python)。
閱讀順序:Model,View,Control。

閱讀順序:Model這個(gè)應(yīng)用軟件、游戲軟件的數(shù)據(jù)怎樣存放。
View數(shù)據(jù)、圖片怎樣輸出到屏幕。
Control業(yè)務(wù)邏輯,行為。

1.按照代碼難度,先找到數(shù)據(jù)類Model類:
玩家積分,飛機(jī)類,敵機(jī)類,子彈類....
數(shù)值設(shè)計(jì)崗位:王者榮耀的一個(gè)英雄,是同一個(gè)類,有30多個(gè)數(shù)值屬性。
比如:int hp; int mp; int attack_distance;
? ?int attack_speed;?? ? int shield;
int magic_distance;?
int attack_type;//攻擊范圍:1一個(gè)點(diǎn)/區(qū)域范圍
不同角色,是數(shù)值高低的組合搭配。
高級(jí)數(shù)值設(shè)計(jì):所有英雄,所有技能,是五個(gè)因素的組合搭配:
1.攻擊 2.防守 3.控制 4.運(yùn)動(dòng)方式 5.傷害范圍
攻防技能的數(shù)值設(shè)計(jì),傷害,防守,有趣,平衡。
Model的設(shè)計(jì):
(1)一個(gè)數(shù)據(jù)、一個(gè)類。(實(shí)訓(xùn))
(2)父類、子類。復(fù)雜設(shè)計(jì)模式。類、接口的設(shè)計(jì)。(培訓(xùn)機(jī)構(gòu))
少量代碼、通用代碼,實(shí)現(xiàn)復(fù)雜功能。
(3)復(fù)雜數(shù)據(jù)結(jié)構(gòu)。

2.工程View部分:新建了哪些窗口,有那些界面元素
飛機(jī)類,敵機(jī)類的圖片素材是哪些文件(Model),怎樣輸出圖片(View)

3.行為Control部分:
(1)鼠標(biāo)、鍵盤事件接口
(2)游戲循環(huán),碰撞檢測(cè)
(3)碰撞檢測(cè):事件觸發(fā)和數(shù)值改變,攻防結(jié)算,生命值改變,積分,吃到道具。
事件觸發(fā)和數(shù)值改變:
A.簡(jiǎn)單寫法。初學(xué)者用分支、循環(huán)、函數(shù),用堆積函數(shù)的辦法,做更多功能。代碼越來(lái)越多,容易出錯(cuò),難以調(diào)試,不可維護(hù)。
B.用了設(shè)計(jì)模式的改進(jìn)寫法。通用的一段代碼,完成多個(gè)功能。好的寫法,重復(fù)、組合各種模塊/功能點(diǎn),由此產(chǎn)生大型復(fù)雜游戲。
(4)數(shù)據(jù)刷新:勝負(fù)
(5)數(shù)據(jù)刷新:事件、狀態(tài)、動(dòng)作。產(chǎn)生BOSS,這一關(guān)失敗,這一關(guān)勝利
事件、狀態(tài)、動(dòng)作:有限狀態(tài)機(jī)。可以寫任何游戲。

以飛機(jī)大戰(zhàn)/LegendCarry0927為例:
Model類:
BOSS: /LegendCarry0927/src/gamerole/Boss.java
玩家:/LegendCarry0927/src/gamerole/Hero.java
父類:ItemBase
子彈:/LegendCarry0927/src/gamerole/BulletArray.java
敵機(jī):/LegendCarry0927/src/gamerole/EnemyArray.java
...
類和屬性(成員變量)
public class ItemBase {
?? ?public int x ; // 橫坐標(biāo)
?? ?public int y ; // 縱坐標(biāo)
?? ?public int r ; // 感應(yīng)半徑
?? ?public int iseffect ; //是否有效,在屏幕繪制
?? ?public int state ; //當(dāng)前狀態(tài)
?? ?
?? ?public int allBlood ; //總血量
?? ?public int blood ; //當(dāng)前血量
?? ?public int shield ; //護(hù)甲
?? ?
?? ?public Image Img;?? ?//圖片
?? ?public String ImgFile;

View:窗口

Hero玩家類的父類ItemBase:
public void paint()
{
//繪制一張圖片
}
函數(shù)上,右鍵點(diǎn)擊Call Hierarchy。查看該函數(shù)在哪些地方被調(diào)用。


窗口類JFrame:
窗口添加了一個(gè)面板類MyPanel
MyPanel包含一個(gè)繪圖函數(shù)public void paint(Graphics g) {... }
其中,調(diào)用hero.paint(); 畫出了玩家飛機(jī)。

行為Control部分:
了解了Model數(shù)據(jù),了解View的繪圖輸出,最后是業(yè)務(wù)邏輯、行為Control:
類名MyPanel,創(chuàng)建了一個(gè)對(duì)象 panel
MyPanel panel = new MyPanel() ;

Java多線程編程:
Thread th = new Thread(panel) ;
?? ??? ?th.start() ;// 觸發(fā)了panel的run()函數(shù)

panel的run()函數(shù):
public void run() {
?? ??? ?
?? ??? ?while(true) {
?? ??? ? ?? ?//不停的刷新數(shù)據(jù),業(yè)務(wù)邏輯

?? ??? ??? ?/*重畫*/?
repaint() ; ?? ?
//觸發(fā)了MyPanel的繪圖函數(shù)public void paint(Graphics g) {... }?? ??? ??
?? ??? ?}
?? ?}

小節(jié):
一些類,完成Model。一些類完成View,完成Control。共同組成了一個(gè)軟件項(xiàng)目。
View和Control,混合寫在窗口類、面板類之中,這是不好的寫法。
這三部分內(nèi)容,混合寫,還是分開(kāi)寫,類和類的牽連多不多,這就是類的內(nèi)聚、耦合。
好的設(shè)計(jì):分工良好,內(nèi)聚性高,耦合性低。
《設(shè)計(jì)模式》:怎么設(shè)計(jì)類(類的個(gè)數(shù)、結(jié)構(gòu)、關(guān)系),解決某種應(yīng)用問(wèn)題。
----
Java函數(shù):不是直接調(diào)用,而是間接觸發(fā)。比如:按鍵、鼠標(biāo)的響應(yīng)函數(shù)。線程啟動(dòng)的Run函數(shù)。repaint()發(fā)出一個(gè)消息,間接觸發(fā)繪圖函數(shù)。
大一初學(xué)者,剛學(xué)習(xí)了函數(shù)、參數(shù)、返回值,做《貪吃蛇》,情理之中。
這種項(xiàng)目,是大一學(xué)完《java》、大二學(xué)完《設(shè)計(jì)模式》的學(xué)習(xí)成果,代表學(xué)生兩年學(xué)習(xí)的編程能力。

面向?qū)ο蟮募夹g(shù):
Java環(huán)境有問(wèn)題。C++的瀏覽器在線編程,學(xué)習(xí)面向?qū)ο蟮募夹g(shù)。

程序員的工作:
1.高效率的學(xué)習(xí)過(guò)程,事半功倍,成長(zhǎng)為軟件工程師。
2.解決語(yǔ)法錯(cuò)誤 expected ';' after class definition
3.解決功能錯(cuò)誤

python123, 瀏覽器在線C++編程:

#include "stdio.h" //OOP,面向?qū)ο?#xff0c;封裝,繼承,多態(tài) //封裝舉例:成員變量,成員函數(shù) 組成一個(gè)類 class Hero {//成員變量或者成員函數(shù)的權(quán)限 public:// 默認(rèn)private, 不可以從外部訪問(wèn)int x;int y; public:void printhero(){printf("%d,%d\n", x,y);} };// expected ';' after class definition int main(){Hero h1,h2;h1.x=100; // 對(duì)象.成員變量 對(duì)象.成員函數(shù)h1.y=200;h1.printhero();h2.printhero( );return 0; }

輸出結(jié)果:

-1116678880,32766
4195728,0
這種輸出,是C的變量沒(méi)有初始化,輸出的原始數(shù)據(jù)。

權(quán)限錯(cuò)誤。error: 'int Hero::x' is private


C3 -P1, Java的錯(cuò)誤舉例:對(duì)象數(shù)組添加十個(gè)不同的對(duì)象,再次遍歷,數(shù)值都一樣。

C++ 十個(gè)對(duì)象組成的數(shù)組:十個(gè)數(shù)據(jù),各不相同,結(jié)果正確

Hero hArray[10]={};
? ? int i;
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? h1.x=100+i;
? ? ? ? hArray[i]=h1; ? // 數(shù)組元素是十個(gè)具體的對(duì)象,各不相同
? ? ? ? h1.printhero();
? ? }
? ? ?printf("\n --- 遍歷各個(gè)元素 \n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? hArray[i].printhero();
? ? }

C++ 十個(gè)對(duì)象指針組成的數(shù)組:重現(xiàn)JAVA的錯(cuò)誤

以下指針數(shù)組,就是第一節(jié)課java代碼,編譯后的樣子。
Hero* hArray[10]={};
? ? int i;
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? h1.x=100+i; ? ? //修改的是同一個(gè)對(duì)象
? ? ? ? hArray[i]=&h1; ? // 數(shù)組元素是十個(gè)指針,指向了同一個(gè)元素
? ? ? ? h1.printhero();
? ? }
? ? ?printf("\n --- 遍歷各個(gè)元素 \n");
? ? for(i=0;i<10;i++)
? ? {
? ? ? ? hArray[i]->printhero();
? ? }


C++ 十個(gè)對(duì)象指針組成的數(shù)組:指針數(shù)組的正確寫法。
給數(shù)組添加元素的時(shí)候,在循環(huán)體內(nèi),每次創(chuàng)建新對(duì)象。
數(shù)組元素是不同的指針,指向不同的對(duì)象。


Hero* hArray[5]={};
? ? int i;
? ? Hero* tmp;
? ? ?printf(" one pointer size %d\n",sizeof(tmp) );
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? tmp=new Hero;
? ? ? ? tmp->x=100+i; ? ? //每次分配新對(duì)象
? ? ? ? hArray[i]=tmp; ? // 數(shù)組元素是不同的指針,指向不同的對(duì)象
? ? ? ? tmp->printhero();
? ? }
? ? ?printf("\n --- 遍歷各個(gè)元素 \n");
? ? for(i=0;i<5;i++)
? ? {
? ? ? ? hArray[i]->printhero();
? ? ? ? //printf("%x\n",hArray[i] );
}
以上對(duì)象指針組成的數(shù)組,是JAVA數(shù)組列表編譯之后的樣子。

看起來(lái)是對(duì)象數(shù)組、添加的是對(duì)象,那是Java程序書寫的樣子。

堆的分配。

這需要《匯編語(yǔ)言》、《計(jì)算機(jī)操作系統(tǒng)》、《計(jì)算機(jī)組成原理》的知識(shí)。

函數(shù)局部變量,棧的分配。


視頻處理工具推薦:視頻剪切合并器。

總結(jié)

以上是生活随笔為你收集整理的钢七连实战C3-P2:项目源码结构 面向对象基础 堆分配的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 无码gogo大胆啪啪艺术 | 国产99久久九九精品无码 | 欧美成人精品欧美一级私黄 | 婷婷综合社区 | 欧美日韩午夜爽爽 | 性生活视频软件 | 久久综合色视频 | 黄色一级片国产 | 美国三级a三级18 | 人人人妻人人澡人人爽欧美一区 | 国产肥白大熟妇bbbb视频 | av免费看在线| 久久久精品在线 | 91视频免费在线 | 欧美日韩综合在线 | 日本欧美日韩 | 波多野结衣在线一区 | 影音先锋美女 | 天天骑夜夜操 | 欧美一区二区三区日韩 | 亚洲小说在线 | 快灬快灬一下爽69 | 看毛片的网站 | 午夜肉伦伦 | 特级西西人体444www高清大胆 | 久久久网址 | 中文字幕一区二区三区在线播放 | 国产午夜精品久久久久 | 秋霞国产 | 欧美不卡在线观看 | 午夜老司机福利 | 污污视频在线播放 | 97视频免费在线观看 | 超碰狠狠操 | 饥渴的少妇和男按摩师 | 在线91视频 | 日本bbwbbw | v天堂中文在线 | 久久露脸国语精品国产 | 久久成人18免费观看 | 综合激情网五月 | 91精品国自产 | jizz处女| 中文字幕成人在线 | ⅹxxxxhd亚洲日本hd老师 | 一级片亚洲| 国产欧美视频在线播放 | 日韩网站在线 | 欧洲人妻丰满av无码久久不卡 | 美女100%视频免费观看 | 二区三区视频 | 无码精品a∨在线观看中文 福利片av | 九九热视 | 欧美一区二区国产 | 欧美亚洲少妇 | 久久婷婷五月综合 | 精品99在线 | 草草福利视频 | 久章草在线观看 | 日本三级吃奶头添泬 | 成年网站在线 | 国产aⅴ精品一区二区三区久久 | 欧美精品性生活 | www中文在线 | 国产精品亚洲αv天堂无码 伊人性视频 | 爱久久视频| 国产一区二区三区视频免费观看 | 一区二区在线视频观看 | 嫩草www | 欧美一区二区三区日韩 | av免费视屏 | 国产高清不卡 | 伊人成人在线视频 | 四级毛片 | 色久影院| 国产午夜精品一区二区三区四区 | 精品国产999 | 色哟哟日韩精品 | 日韩精品一区二区视频 | 精品成人一区二区 | 成年人网站免费观看 | 老地方在线观看免费动漫 | 色屁屁一区二区 | 日韩一区二区三区视频在线观看 | 福利免费观看 | 中文无码精品一区二区三区 | 亚洲品质自拍视频 | 激情综合婷婷 | 久久人妻免费视频 | 欧美久久免费 | 午夜成人影片 | 岛国精品一区二区 | 日韩精品在线观看一区二区 | 中文字幕理伦片免费看 | 国内av| 日本中文视频 | 国产成人精品一区二三区四区五区 | www.黄在线| 久久亚洲精品石原莉奈 |