2023年8月25日 星期五

ECO 08/25

一番思索後,
今天決定練三隻人物, 商人/ 冒險者/ 鐵匠

鐵匠是後期練功需要。
商人感覺在收集物資很方便。
冒險者可以變頻依小刀給盜賊檢,要開箱賺錢也很方便。



鐵匠點滿鈍器修練,吃滿Lv30道具,先解著三隻新手任務 FirstJob
接著身上背著兩隻分身解LV6 LV9的討罰任務, 

之後一路解到都有泰迪後, 商人任務點不小心弄光了只好先忍痛解到這裡了
好累







2023年8月24日 星期四

ECO 2023/08/23

 今天依舊創了四隻, 總之先累積分身的任務點再說...

然後研究怎麼一轉, 這才發現, nekogame eco的

一轉任務已經是不用了, 屬性到就可以轉了


我還記得盜賊的轉職在2樓, 但是那滿滿的印尼文實在打敗了我,

最後查了ECO wiki才知道我卡在裝備沒脫光光.

痾...太久沒玩真的忘了要全身扒光才能轉職


就這樣我終於有了強力打手(盜賊)跟 無限補品了(神官)....現在的我已經天下無敵了,

然後我滅了N隻巴鸣...

打了一堆肉, 想說請道具精煉師來幫忙, 

結果因為身上沒錢...連100G都沒有, 所以沒辦法精煉,


解了LV9跑腿任務,   從下城咖啡廳搬運到南方平原的一個NPC上, 15000G GET!

我帶著神官跟2X個smoke 肉.征戰北方海角! 那我充滿回憶的北方海角!


前兩次, 我以為我有神官我天下無敵, 走正中央想要存點. 

結果TMD的...狼群一來,神官捕到沒魔一起滅團


第三次,我終於學乖了, 我從右側斷捱走邊邊過去,

就在我快要成功的時候, 一隻狼過來, 然後兩隻, 然後他一個會心咬..神官摔車..

然後我滅了


第四次...我這次一隻一隻滅,走邊邊, 我終於跟復活大哥講到話了,

媽的...但有狼趁我在那邊google 翻譯印尼文, 一陣手忙腳亂下, 我又滅了.


第五次...我終於想到LV30下新手有免費的商城用品可以用, 我吞了HP/MP/SP增加,

在跟復活大師找到soul甚麼東西的,上了FT系的魂吧.

沿著邊邊走, 我準備萬全, 居然沒半隻狼過來...(應該是那些狼被前幾次的我引到別的地方去了)


終於存好點了,然後拼命練功, 收集肉!  北方海角是我的故鄉!

2023年8月23日 星期三

ECO 2023 8/22


 因為玩flyff universe 練功時都會去找歌,

無意間聽到了ECO online的北方諾頓的音樂.

越聽越想玩ECO, 於是找了之前完沒多久的連一轉都沒有的Necogame ECO帳號來玩,


甚麼資源都沒有, 語言不通, 連新手任務都不知道怎麼解的我, 在東平原獨自打著皮陸路,

杰利科藥水雖然重, 但是一次回300HP,150MP, 150SP. 

身無分文的我, 只能全身新手裝敲皮陸路收集藥水, 遊戲的很多東西都忘光了,上次玩著遊戲的時候是日版最後一天. 2017年的事情了.

聽著東平原的音樂的我, 雖然一直做的是打皮陸露&甲蟲這麼無聊的事情,但內心平靜.以前練功會比較追求練功效率, 但今天很神奇地也不想管那種東西.

我身上背著剛創連任誤點都只有1的初心手, 收集著杰利科藥水, 

新手教程都是印尼文,看不懂, 今天懶得去解。

只想打著皮陸路.

然後我往東方跑,打著牛奶皮陸路收集著, 牛奶, 奶油 狂噴, 雖然經驗值還是幾乎沒動.

接著再往東方海角移動前一張地圖移動, 中途遇到一個蔬菜海膽, 我殺了幾隻得了幾個菜之後,因為手殘打了獨角獸, 然後就滅團了。

感謝皮陸路、牛奶皮陸路、爬爬蟲、
海膽、蔬菜海膽陪伴我度過充滿情懷的回鍋第一天,

話說這Loading圖太不ECO了...









2018年5月23日 星期三

[C/C++] #Define的心得

#Define 的用法 可以用在代碼替換,跟條件編譯

1.代碼替換

#define  A  1000;

int  s = A;//對於編譯器來說就是編譯的時候 編譯器看到那行會是 int s= 1000;
---------------------------------------------------------------------------------------------------
可以帶入參數

#define  A(a,b)  cout<<a,b;

A(a,b);    //  cout<<a,b;;
 
---------------------------------------------------------------------------------------------------
可以利用定義多行 來達到 寫函式的視覺效果(但實際上不是函式)
#define  F(x) \
{\
    if(x>100)\
{\
cout<<x;\
}\
}
---------------------------------------------------------------------------------------------------

2.條件編譯

#ifdef F_Test

//如果有定義F_Test的話 編譯這區塊

#else

//如果沒有定義F_Test的話 編譯這區塊

#endif


#ifndef
#define F_test

//可以確保這個區塊避免被重複定義

#endif


3.結論

(1) #define 就真的只是代碼的替換而已 ,就跟在記事本使用取代的功能很像(如果沒帶參數的話,就完全一樣),他的參數也是使用取代特性,

(2)#define跟函式差異最大的地方在於, 函式是佔有有實體空間的,函式有邏輯性

(3)函式不能重複定義,define可以,但要注意後蓋前

#define FX 200
#define FX 100

cout<<FX;

結果會是100

(4)好好利用後蓋前的特性的話,可以做到交叉比對,或是有效的Mark掉函式

void A(x){  cout<<x++;};
void B(x){};//空函式 等同於mark掉
#define  A   B

這時候你會發現只要是有include到這個define的A函式都會變成B函式

試想一下,假設你要暫時性的把所有A(X)都替換成B(X),選項一當然是使用全部取代的功能,
可是一來怕萬一將來又要改回來的話,二來怕取代的過程之中不小心手殘取代錯的話,
這時候可以利用#define來達到這個目的



2018年5月22日 星期二

使用C++內建函式 log要偵錯的變數到檔案之中



#include "stdafx.h"
#include<stdio.h> //fopen fprintf
#include <time.h> //tm   time_t  localtime time()
#include<iostream>

using namespace std;
int main()
{
FILE*  a_file;
time_t  t_time;
char   buff[100];
memset(buff, 0, 100 * sizeof(char));
sprintf_s(buff, "..\\file_path%d%d.txt", 1, 2);

fopen_s(&a_file,buff, "a");//w:開啟寫入檔案,從頭開始寫 a:開啟寫入檔案,從資料末端開始寫  如果檔案不存在會產生新檔案

if (a_file)
{
//開檔成功
char buff[80];

time(&t_time);//取得目前時間
tm* datetime = new tm;
localtime_s(datetime,&t_time);


for (int i = 0; i < 80/3; i++)
{
memset(buff, 0, 80 * sizeof(char));
sprintf_s(buff, "%02X ", i);//假設此為要記錄的變數 ,要以16進制呈現
//fwrite(buff,1,strlen(buff), a_file);
fprintf(a_file, "%d/%d/%d %d:%d:%d %s\n", datetime->tm_year+1900, datetime->tm_mon+1, datetime->tm_mday, datetime->tm_hour, datetime->tm_min, datetime->tm_sec, buff);
}
}
fclose(a_file);
int test;
cin >> test;



    return 0;
}

2018年5月20日 星期日

C++ 動態配置/釋放多維陣列


動態一維

配置:
char*  buff = new char[len];
釋放:
delete[] buff;

動態二維
配置:
char**  buff =new char*[len1]

for(int i=0; i<len2;i++)
   buff[i]= new char[len2];

釋放:
for(int i=0; i<len2;i++)
 delete[] buff[i];

delete[] buff;

動態三維
char***  buff = new char**[len1];

for (int i = 0; i < len1; i++)
{
buff[i] = new char*[len2];
for (int j = 0; j < len2; j++)
buff[i][j] = new char[len3];
}
釋放:
for (int i = 0; i < len2; i++)
{
for (int j = 0; j < len2; j++)
delete[] buff[i][j];
delete[]buff[i];
}
delete[] buff;

可以發現跟stack的概念有點像(後進先出)


犯過的語法錯誤-1:

char** buff[i] = new (char*)[len];(X)
char** buff[i] = new char*[len];(0)
誇號把它刮起來會出現compiler error

(char*) 會出錯的原因應該是被compiler視作強制轉型的語法,而new後面應該是要接型別名稱才對
結論就是new 後面 不要亂夸型別

犯過的語法錯誤-2:

另外由於接觸過各類不同的語法,所以發生過[]與() 混淆的錯誤
int* buff[i] = new int(len);(X)
int* buff[i] = new int[len];(O)

兩者compiler都會過,然而
第一種可能會有run time error,原因在於()是用來配置初始值的,所以乍看會誤以為
配置了len長度的陣列,但是事實上只是配置了一個初始值為len的陣列







2016年10月19日 星期三

10/6到法國台北拍婚紗照囉

終於到了拍照的日子了,
剛好當天艾利颱風的外圍環流會掃到台灣,
挺擔心外景沒辦法拍的。

10/6跟法台約早上9:00化妝,
我的造型師是小奇。

小奇幫我畫的妝跟髮型我都好喜歡,
像是髮型我都只跟她說我想要盤起來+花圈,
或是我想要甚麼髮飾+頭髮放下來,
他就會幫我很快想到大概是怎要的樣子,