『壹』 嗶哩嗶哩擋屏彈幕怎麼弄啊好想發彈幕不可以換行
彈幕欄上方有個搞基彈幕 看到沒有 點開他 然後 慢慢學吧 如果你學了c語言 別說換行了 圖片彈幕都能做出來
『貳』 C語言讓輸入的句子彈幕的形式輸出
將文件中的文本一行一行讀入到數組中,然後根據文本中的字母來模擬鍵盤的輸入,每輸入完一行就輸入一個空格和一個回車
彈幕,中文流行詞語,指的是在網路上觀看視頻時彈出的評論性字幕。大量吐槽評論從屏幕飄過時效果看上去像是飛行射擊游戲里的彈幕,所以NICO網民將這種有大量的吐槽評論出現時的效果做彈幕。在中國,本來只有大量評論同時出現才能叫彈幕,但是隨著誤用單條評論也能叫彈幕了。
句子是語言運用的基本單位,它由詞、片語(短語)構成,能表達一個完整的意思,如告訴別人一件事情,提出一個問題,表示要求或者制止,表示某種感慨,表示對一段話的延續或省略。句子和句子中間有比較大停頓。它的結尾應該用上句號、問號、省略號、或感嘆號。
『叄』 如何使用 PHP 構建一個高性能的彈幕後端服務
隨著WEB2.0的流行,現在很多網站都流行使用「彈幕」這種形式來實現互動。
彈幕(barrage),中文流行詞語,原意指用大量或少量火炮提供密集炮擊。大量以字幕彈(dàn)出形式顯示的評論同時在屏幕上飄過的現象也被稱為彈幕。
作為PHPer的我們,看到現在各種網站都有酷炫的彈幕飛過,我們是不是也想給自己的網站加入彈幕功能呢?
首先彈幕的後端其實說白了和公共聊天室的後端原理十分相似,都是一個客戶端發送消息給服務端,服務端再將收到的消息廣播給其他的客戶端。對於後端來說他們幾乎沒區別,區別就在於前端。
好在我們有一個前端彈幕插件,這個插件是一個jquery插件,github地址:https://github.com/chiruom/jquery.danmu.js,基本上會使用jquery語法,看看示例代碼就可以傻瓜化使用。
前端已經有了解決方案,但是後端呢?前端如何與後端通訊?用傳統的ajax輪詢嗎?不行,這樣效率太低,想想各大火爆的直播平台都是同一時間幾萬人在線,幾千人同時發彈幕,如果靠ajax輪詢一個php介面的話伺服器會吃不消的。且彈幕消息存儲方案略顯復雜,有人問為什麼要存儲呢?因為ajax使用的HTTP協議是無狀態協議,A客戶端和B客戶端之間對於伺服器來說沒有任何標志,如果伺服器要確保A客戶端和B客戶端分別在兩次請求的時候伺服器只返回這兩個客戶端沒有獲取過的彈幕消息,那麼伺服器端就必須使用一個緩存來標識某某客戶端看過哪條彈幕消息。綜上所述ajax可以實現小規模的彈幕通信方案,但是很麻煩。
好在最新的HTML5中加入了WebSocket協議,我們可以通過WebSocket這種基於HTTP協議之上的即時通信協議來替代ajax這種傳統的我問你答的老舊通信模式。而我們是PHPer,對於我們這種只懂PHP的人該如何編寫WebSocket服務端呢?好在我們又得知PHP有一個Swoole擴展,我們在PHP語言中使用它可以很方便的構建一個WebSocket服務端。
關於Swoole的介紹可以參照他的官網http://www.swoole.com/,下面引用官網對它的一段簡短的介紹。
PHP的非同步、並行、高性能網路通信引擎,使用純C語言編寫,提供了PHP語言的非同步多線程伺服器,非同步TCP/UDP網路客戶端,非同步MySQL,非同步Redis,資料庫連接池,AsyncTask,消息隊列,毫秒定時器,非同步文件讀寫,非同步DNS查詢。 Swoole內置了Http/WebSocket伺服器端/客戶端、Http2.0伺服器端。
Swoole可以廣泛應用於互聯網、移動通信、企業軟體、雲計算、網路游戲、物聯網(IOT)、車聯網、智能家居等領域。 使用PHP+Swoole作為網路通信框架,可以使企業IT研發團隊的效率大大提升,更加專注於開發創新產品。
先別被Swoole這么多的功能嚇到了。我們先關注這裡面的重點Swoole內置了Http/WebSocket伺服器端/客戶端意味著我們可以通過它構建WebSocket的服務端。看到這里我們是不是就急急忙忙去拿官網的WebSocket服務端代碼做測試呢?不,Swoole是一個PHP擴展,意味著我們還得去安裝它。是不是直接去下載so文件然後在php.ini中加入extension=swoole.so就可以了呢?還不是,我們先去看看Swoole擴展的依賴,這也是我們使用任何語言的任何外部包,外部模塊,外部擴展最先要了解的問題。
參考官網:http://wiki.swoole.com/wiki/page/7.html環境依賴
僅支持Linux,FreeBSD,MacOS,3類操作系統
Linux內核版本2.3.32以上
PHP5.3.10以上版本,包括PHP7
gcc4.4以上版本或者clang
cmake2.4+,編譯為libswoole.so作為C/C++庫時需要使用cmakePHP版本依賴
swoole僅支持PHP5.3.10或更高版本,建議使用PHP5.4+swoole不依賴php的stream、sockets、pcntl、posix、sysvmsg等擴展。PHP只需安裝最基本的擴展即可意味著我們Windows下是無法使用這個擴展了(其實可以藉助cygwin在win下使用swoole,但是考慮到我們使用swoole擴展就是為了性能,也為了熟悉以後的生產環節部署做准備,強烈推薦在linux下開發),那麼我們把開發環境轉移到Linux下進行吧。
接著還要求Linux內核版本為2.3.32以上,PHP為5.3.10以上,那麼我們就用最新的CentOS吧,這個版本的yum安裝的php直接就是PHP7最新版,根本無需考慮其他問題,當然你喜歡圖形界面,用Ubuntu也可以。其他的基本上最新的Linux發行版都是符合版本要求的。
接著我們便來安裝這個擴展,推薦使用PECL來安裝,只需要一條pecl install swoole
即可,非常方便。當然你要編譯安裝,具體步驟請參考http://wiki.swoole.com/wiki/page/6.html安裝完擴展之後在命令行下輸入
php -m
檢查,如果有swoole那麼說明安裝成功了。
接下來就正式開始我們的編碼旅程了。
開始編碼旅程之前我們先看看最基礎的效果原型是什麼樣子沒錯就是這個樣子,兩個瀏覽器之前完全獨立使用Websocket連接服務端,因此對於服務端來說這兩個瀏覽器就相當於兩個完全處在不同機器上的客戶端。
效果看完了就開始來講代碼吧。
我們先看看官網的WebSocket服務端示例代碼。
$serv = new Swoole\Websocket\Server("127.0.0.1", 9502);$serv->on('Open', function($server, $req) {echo "connection open: ".$req->fd;
});
$serv->on('Message', function($server, $frame) {echo "message: ".$frame->data;
$server->push($frame->fd, json_encode(["hello", "world"]));});
$serv->on('Close', function($server, $fd) {echo "connection close: ".$fd;
});
$serv->start();
我們看到這個代碼的第一行先是new了一個WebSocket服務端對象,並且在構造方法中的第一個參數指定了服務端監聽的IP,第二個參數指定了服務端監聽的埠。然後使用on方法為每一個事件設置了回調函數,最後一行start方法正式開始運行服務端。
這種寫法非常像Javascript裡面的非同步調用,這也是Swoole中的事件驅動非同步非阻塞特性,正因為是這種特性,每一個獨立的事件(請求)會在服務端接收到之後分別非同步處理,他們之間無需互相等待,這也是Swoole性能高的原因所在。
我們來分別剖析一下每一個事件的含義。
$serv->on('Open', function($server, $req) {echo "connection open: ".$req->fd;
});
顧名思義,Open表示打開一個新的鏈接,並且在事件觸發之後echo出連接上服務端的客戶端id,該客戶端唯一id為回調函數第二個參數中的fd欄位。這也是服務端區分客戶端的唯一id。
$serv->on('Message', function($server, $frame) {echo "message: ".$frame->data;
$server->push($frame->fd, json_encode(["hello", "world"]));});
同樣顧名思義,Message表示消息到達服務端的事件,並且在事件觸發之後echo出發送給服務端的數據,該數據為回調函數第二個參數的data欄位。另外我們還看到它調用了$server->push,這是回調函數的第一個參數中的push方法,它是一個服務端給客戶的發送數據的方法,第一個參數為要發送的客戶端id,第二個為要發送的數據,這里的含義是向發給服務端消息的那個客戶端發送["hello", "world"]這個數組(方括弧寫數組為PHP5.4的新特性,如果你是PHP5.3請使用傳統的array工廠函數生成數組)經過json序列化之後的數據。
$serv->on('Close', function($server, $fd) {echo "connection close: ".$fd;
});
最後一個事件Close更加容易理解,就是關閉事件,當然關閉的不是服務端,而是客戶端,可以理解為客戶端與服務端斷開連接的事件。回調函數中的代碼含義為echo出與服務端斷開連接的那個客戶端id。
基本的API都清楚了,下面就直接看代碼吧,短短二十行而已。
https://github.com/cw1997/danmu-demo/blob/master/server.php$server = new swoole_websocket_server("0.0.0.0", 1997);$server->on('open', function (swoole_websocket_server $server, $request) {echo "server: handshake success with fd{$request->fd}\n";//$request->fd 是客戶端id});
$server->on('message', function (swoole_websocket_server $server, $frame) {echo "receive from {$frame->fd}:{$frame->data},opcode:{$frame->opcode},fin:{$frame->finish}\n";//$frame->fd 是客戶端id,$frame->data是客戶端發送的數據//服務端向客戶端發送數據是用 $server->push( '客戶端id' , '內容')$data = $frame->data;
foreach($server->connections as $fd){
$server->push($fd , $data);//循環廣播
}
});
$server->on('close', function ($ser, $fd) {echo "client {$fd} closed\n";
});
$server->start();
這里最核心的廣播代碼其實還用到了一個之前沒有提到過的成員,也就是swoole_websocket_server對象的connections成員,這個成員中保存了所有已連接上該WebSocket服務端的fd,也就是客戶端id。因此我們只要在message事件中使用foreach遍歷該成員,循環將所有服務端收到的彈幕消息都發送給其他已連接上該服務端的客戶端即可。
後端講完了再講講前端吧。
前端代碼也不是很多https://github.com/cw1997/danmu-demo/blob/master/index.htmlvar ws = new WebSocket("ws://192.168.1.107:1997");ws.onopen = function(){
console.log("握手成功");
ws.send('hello world!!!');
};
ws.onmessage = function(e){
console.log("message:" + e.data);
var time = jQuery('#danmu').data("nowtime") + 1;var text_obj = '{ "text":"' + e.data + '" , "color":"green" ,"size":"1","position":"0","time":"' + time + '" ,"isnew":" "}'; //構造加上了innew屬性的字元串danmu對象console.log(text_obj);
var new_obj = eval('(' + text_obj + ')'); //轉化為js對象jQuery('#danmu').danmu("add_danmu", new_obj); //向插件中添加該danmu對象};
ws.onerror = function(){
console.log("error");
};
核心代碼都在這里,使用new WebSocket("ws://192.168.1.107:1997")創建一個WebSocket客戶端連接對象,通過該對象的各種事件進行對應的操作,和服務端是不是很像?更多代碼解釋可以參考源代碼中的注釋,這里不做更多介紹。
看到這里相信作為一名PHPer的你也可以開發出屬於自己的彈幕系統了。這里展示的只是一個最基礎最原始的彈幕平台。我們也了解到了使用PHP開發一個彈幕平台需要涉及到的技術有WebSocket,Swoole擴展,甚至碰到了很多初級開發者平時不怎麼接觸的工具,比如說PECL,比如說Linux。
其實PHP結合Swoole擴展還可以做很多事情,比如說對接各種家電,對接各種硬體介面實現在Web端實時控制家電,又比如說結合樹莓派做智能小車,通過web端進行遙控等等,各種新奇的玩法等你發現。誰說PHP只能做Web開發?PHP擁有了Swoole擴展其實能做的事情還有很多,Swoole就像他的宣傳標題一樣:重新定義PHP。
『肆』 能否用純粹的C語言作STG彈幕游戲如果能做的話難度大么求下思路
純c可以做任何東西,這個游戲當然可以做。但這個游戲我沒玩過,所以沒辦法給思路~
『伍』 我想虛心討教一下,zun的彈幕游戲是用什麼語言做的
應該是c語言,但是像是緋想天之類或者最近的劍姬夢想估計是用專門的開發引擎了
『陸』 sc彈幕是什麼
彈幕視頻系統源自日本彈幕視頻分享網站(niconico動畫),國內首先引進為AcFun(內容大眾多元) 以及後來的bilibili(新生的二次元向彈幕網)。
標準的彈幕系統
大量吐槽評論從屏幕飄過時效果看上去像是飛行射擊游戲里的彈幕,所以NICO網民將這種有大量的吐槽評論出現時的效果做彈幕。在中國,本來只有大量評論同時出現才能叫彈幕,但是隨著誤用單條評論也能叫彈幕了。[1]
在國內通常被認為本意是軍事用語中密集的炮火射擊,過於密集以至於像一張幕布一樣。英文稱「Bullet Hell」(子彈地獄)或「Bullet Curtain」(彈幕)。其實彈幕在軍事上指的是炮兵戰術(barrage)而非步兵戰術或防空射擊時的戰術。(注1:在日語中彈幕一詞可用於形容防空炮射擊所產生的密集破片,但並不是正式的軍事術語)(注2:步兵全自動開火以達到壓制的戰術被稱為地獄火(hellfire)戰術)
於是,卷軸射擊游戲和清版游戲因為大多都具有這種特點,被稱為彈幕射擊游戲或彈幕游戲。以上個世紀末的《東方Project》為代表,同人游戲中經常使用彈幕射擊游戲這一製作類型,這便是彈幕這個詞最早進入ACGN界的來源。
彈幕已經成為了一種特殊播放器的特色,彈幕系統則是彈幕播放器的核心。
註:在niconico,中國地區將這種評論方式等於彈幕,而在日本,這種評論(也就是我們通常所說的「彈幕」)被稱為コメント(也就是comment,注釋、評論、意見的意思),只有國內的彈幕網站會將評論稱之為彈幕。
最早為軍事用語,在日本興起了彈幕射擊游戲最先把該詞語帶到ACGN界,又因為niconico播放器的評論功能很像是橫版彈幕射擊游戲,之後這種評論功能在中國地區得名為彈幕,這個詞被用在NICO上最早是在「ニコニコ動畫(仮)」時期投稿的視頻「レミオロメン「粉雪」」(sm48122,現已經被刪除)上的中文評論,被NICO眾稱為「彈幕的原點」「彈幕的發祥地」等。
BE和HE一般在各種游戲作品和影視文學作品中出現,用來形容結尾的最終狀況。BE為Bad Ending,指悲劇結局。而HE,也就是Happy Ending,意思為好的結局,開心幸福的結局。
HE:Happy Ending大團圓結局,【比如一本小說裡面男主/女主很愛女主/男主,雖然他們在一起的過程裡面遇見看很多的阻礙,但是最後還是在一起了,既是HE】簡單的來說就是一個美好的結局,一個好的結局。
BE:Bad Ending 悲傷的結局【比如一本小說裡面男主/女主很愛女主/男主,但是結局的時候女主/男主死了或者是他們彼此相愛,卻不在一起,既是BE】 簡單的來說就是一個悲傷的結局。
另外還有雙結局:就是從文中的某一情節開始分裂後,寫出兩種結局。
『柒』 A站,B站,C站,D站,F站是什麼意思
經常聽別人說A站、B站、C站、D站、F站,這些站都是動漫宅文化聚集地。
A、B、C是視頻站,D站是原畫站,F站是首頁動漫音樂站內置其他的比如各種小工具等等。
1、A站:AcFun彈幕視頻網。
『捌』 幫忙打下圖中B站彈幕所用的C語言,並簡略說明下某些特定代碼,所代表的…
這是java script,不是c的。
如果你是想用c實現彈幕效果,你抄這段js也沒用,不是一種運行模式,不通用的。
『玖』 粉絲用代碼做了姜貞羽自畫像的彈幕,這是怎麼做到的
(1)姜貞羽
最近有位崇拜姜貞羽的粉絲,用代碼在彈幕上作了她的自畫像,然後就迅速上了熱搜,使我們都驚呆了。這么一想,這應該是姜貞羽的一位計算機技術十分厲害的粉絲,使我們大開眼界,一般人是做不到這樣的,因為一般人不具有這個能力。代碼在我們一般人的眼裡,很個枯燥無味的東西,但是代碼在一些計算機高手的手裡可就不一樣了,在計算機高手的手裡所有的東西都是由代碼構成的。想不到吧?所以說,對於碼農而言,代碼代表著一切,而那位粉絲絕對是姜貞羽的超級粉絲,然後想通過自己的這個優勢去表達對偶像的喜愛,不然不會這么做的。說明,姜貞羽是個有特別魅力的女生,才值得被那位粉絲如此喜歡和尊敬。這也使姜貞羽被大眾關注了起來。那麼姜貞羽是誰呢?原來還可以這樣操作",令人羨慕不已。想必這位粉絲肯定在計算機這個領域是個非常優秀、非常厲害的人,才能夠做出這樣子的彈幕。
姜貞羽通過這次的節目也慢慢變得紅起來,在節目之後,聽說她最近在拍攝一部新的古裝劇,這么努力的姑娘,希望她能大紅大紫吧。
『拾』 C語言寫彈幕游戲
你是在黑窗口下實現的?那我的建議是改用win32編程,利用windows提供的API來做這個游戲的圖形顯示部分。
以前我也覺得能在黑窗口實現游戲、動畫很吊,很了不起。後來我想通了,「只不過是呈現畫面的方式不同罷了」,而且就算在黑窗口下也不完全是自己實現的技術,還是得調用各種庫函數,那又為何不換個在圖形顯示方面好用的庫呢?