當前位置:首頁 » 編程軟體 » 兩個人編程

兩個人編程

發布時間: 2022-10-07 08:45:19

Ⅰ 求教編程做出一個兩人多人之間簡單的聊天程序

製作人: CK.y ,匯成建築企業管理Q:610089144
僅供參考,大家要學會自己製作,很有成就感的啊!! 用 java 作後台,開發一個 C / S 架構的多人聊天程序。首先,設計用戶界面。

一、界面設計

界面的元件全部使用 Flash CS3 自帶的組件:
首先,放入 TextInput 組件(實例名 input_txt),作為用戶輸入;
再放入 Button 組件(實例名 submit_btn),用於提交輸入的信息;
最後放入 TextArea 組件(實例名 output_txt),顯示聊天信息。

二、組件參數初始化
由於客戶端代碼不是很多,我們這次就寫在動作幀上:
// ************ 組件參數初始化 ************
submit_btn.label = "發送消息";
output_txt.editable = false;

// 設置各組件中字體的大小
input_txt.setStyle("textFormat", new TextFormat(null, 15));
output_txt.setStyle("textFormat", new TextFormat(null, 15));
submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));

// 當按下回車或點擊 submit_btn 按鈕後調用事件處理函數
submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

// 事件處理函數
function onKeyDown(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.ENTER) {
sendMessage(null);
}
}

function sendMessage(evt:Event):void {
// 測試:將 input_txt 的內容輸出到 output_txt 中
output_txt.appendText(input_txt.text + "\n");

// 清空 input_txt,並設置焦點到 input_txt
input_txt.text = "";
stage.focus = input_txt;
}

三、編寫客戶端 Socket
1. 首先,Socket 連接非常簡單:
var socket:Socket = new Socket();
socket.connect("127.0.0.1", 8888);
其中 connect() 方法中的兩個參數分別為是主機名和埠號(埠號盡量用 1024 以上)。好了,這樣就連接上了。接下來是讀寫的問題。

2. 向伺服器端寫入字元串:我們在 sendMessage() 方法中進行寫入操作,注意寫出的字串必需以回車(\n)結束:
function sendMessage(evt:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(input_txt.text + "\n");
socket.writeBytes(bytes);
socket.flush();

// 清空 input_txt,並設置焦點到 input_txt
input_txt.text = "";
stage.focus = input_txt;
}

3. 讀取伺服器端寫回的字元串:最後將伺服器發回的字元串輸出到 output_txt 文本域中:
// 當客戶端 socket 收到數據後會調用 readMessage() 函數
socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage);

function readMessage(evt:ProgressEvent):void {
output_txt.appendText(socket.readUTF() + "\n");
}

四、Flash 客戶端全部腳本
// ************ 組件參數初始化 ************
submit_btn.label = "發送消息";
output_txt.editable = false;

input_txt.setStyle("textFormat", new TextFormat(null, 15));
output_txt.setStyle("textFormat", new TextFormat(null, 15));
submit_btn.setStyle("textFormat", new TextFormat(null, 15, null, true));

submit_btn.addEventListener(MouseEvent.CLICK, sendMessage);
addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

function onKeyDown(evt:KeyboardEvent):void {
if (evt.keyCode == Keyboard.ENTER) {
sendMessage(null);
}
}

function sendMessage(evt:Event):void {
var bytes:ByteArray = new ByteArray();
bytes.writeUTFBytes(input_txt.text + "\n");
socket.writeBytes(bytes);
socket.flush();

input_txt.text = "";
stage.focus = input_txt;
}

// ************ 客戶端 Socket ************
var socket:Socket = new Socket();
socket.connect("127.0.0.1", 8888);
socket.addEventListener(ProgressEvent.SOCKET_DATA, readMessage);

function readMessage(evt:ProgressEvent):void {
output_txt.appendText(socket.readUTF() + "\n");
}

五、編寫 Java 伺服器端 Socket
最後,我們需要編寫 Java 後台伺服器端的代碼。
首先,創建一個 ServerSocket 作為Socket 伺服器。當有客戶端連接後通過 accept() 方法即可得到客戶端的 Socket:

ServerSocket socketServer = new ServerSocket(8888);
System.out.println("伺服器已啟動,等待客戶端連接");

// accept() 方法是阻塞式的,當有客戶端連接成功後才繼續執行
Socket socket = socketServer.accept();
System.out.println("客戶端連接成功");

然後得到與客戶端的輸入流和輸出流(輸入流是客戶端連接到伺服器的管道,輸出流則是伺服器到客戶端的管道):
// 獲得輸入流和輸出流,輸入流為 BufferedReader 類型,輸出流為 DataOutputStream 類型
BufferedReader reader =
new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
DataOutputStream writer = new DataOutputStream(socket.getOutputStream());

拿到輸入輸出流以後,就可以通過輸入流(InputStream)讀取 Flash 客戶端發來的字元串,通過輸出流(OutputStream)向 Flash 客戶端寫字元串:
while (true) {
// readLine() 方法也是阻塞式的,當客戶端有消息發來就讀取,否則就一直等待
String msg = reader.readLine();

// 當客戶端發送的字元串為 null 時,說明客戶端已經關閉,此時退出循環
if (msg == null) {
System.out.println("客戶端已離開");
break;
}

// 將讀入的信息加工後再寫回客戶端
writer.writeUTF("寫回客戶端的" + msg);
}

以上是ServerSocket 與 AS 3 Socket 通信的基本原理。在實際應用中,會有多個客戶端連接這個ServerSocket,因此要創建一個多線程的 Socket 伺服器。
下面簡述一下多線程 Socket 伺服器原理:當socketServer.accept() 之後就需要實例化一個線程對象,在該對象中持有socketServer.accept() 返回的 Socket 對象,然後讓線程跑起來執行讀寫操作。如果再來一個客戶端就再跑一個線程,同樣執行讀寫操作。同時,用一個 List 容器來管理這些對象。
最終伺服器端的代碼如下:
import java.io.BufferedReader;
import java.io.DataOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

public class FlashScoket {
private List<Client> clientList = new ArrayList<Client>();

public static void main(String[] args) {
new FlashScoket().runSocket();
}

private void runSocket() {
try {
ServerSocket socketServer = new ServerSocket(8888);
System.out.println("伺服器已啟動,等待客戶端連接");

while (true) {
// accept() 方法是阻塞式的,當有客戶端連接成功後才繼續執行
Socket socket = socketServer.accept();
System.out.println("客戶端連接成功");

// 實例化一個 Client 對象,並啟動該線程
Client client = new Client(socket);
clientList.add(client);
client.start();
}
} catch (IOException e) {
e.printStackTrace();
}
}

class Client extends Thread {
private Socket socket;

private BufferedReader reader;
private DataOutputStream writer;

private Client(Socket socket) {
this.socket = socket;
try {
// 獲得輸入流和輸出流,輸入流為 BufferedReader 類型,輸出流為 DataOutputStream 類型
reader = new BufferedReader(new InputStreamReader(socket.getInputStream(), "UTF-8"));
writer = new DataOutputStream(socket.getOutputStream());
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}

@Override
public void run() {
try {
while (true) {
// readLine() 方法也是阻塞式的,當客戶端有消息發來就讀取,否則就一直等待
String msg = reader.readLine();

// 當客戶端發送的字元串為 null 時,說明客戶端已經關閉,此時退出循環
if (msg == null) {
clientList.remove(this);
System.out.println("客戶端已離開");
break;
}

// 將讀入的內容寫給每個客戶端
for (Iterator<Client> it = clientList.iterator(); it.hasNext();) {
Client client = it.next();
client.getWriter().writeUTF(msg);
}
}
} catch (IOException e) {
e.printStackTrace();
} finally {
// 關閉 socket 及相關資源
try {
if (reader != null) {
reader.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (writer != null) {
writer.close();
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (socket != null) {
socket.close();
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
}

public DataOutputStream getWriter() {
return writer;
}
}
}

六、補充技術
1. 如何測試?
* 首先要編譯FlashScoket —— javac FlashScoket
* 然後啟動FlashScoket —— java FlashScoket
* 最後將 Flash 發布為 exe 文件格式,同時開啟多個即可。

2. 自動跟蹤到最後一行:當收到新的消息時自動滾動到最後一行,在 readMessage() 方法中加入:
output_txt.verticalScrollBar.scrollPosition = output_txt.verticalScrollBar.maxScrollPosition;

3. 當出現輸入/輸出錯誤並導致發送或載入操作失敗時提示用戶,加入對IO_ERROR 的偵聽:
socket.addEventListener(IOErrorEvent.IO_ERROR, socketIOError);
function socketIOError(evt:IOErrorEvent):void {
output_txt.appendText("伺服器端尚未開啟,請稍後再試\n");
}

4. 在sendMessage() 中加入對空字元串的驗證,如果為空則 return:
if (input_txt.text == "") {
return;
}

5. 在消息前面顯示用戶名:大家可以製作一個登錄頁面,輸入用戶名,假設已將輸入的用戶名存放在 userName 變數中,在寫入時加進去:
var userName:String = "FL 車在臣";
在 sendMessage() 中相應改為:
bytes.writeUTFBytes(userName + " : " + input_txt.text + "\n");

6. 使用output_txt .htmlText 輸出文字,那麼相應的寫入格式可以調整為:
bytes.writeUTFBytes("<font color='#0000FF'>" + userName + " : </font>" + input_txt.text + "\n");

Ⅱ 用python編程寫程序:兩個人分別投一個骰子,點數高的贏

摘要 python擲骰子

Ⅲ 甲乙兩人編程,其中一個人休假5天

14天

Ⅳ 俄羅斯00後情侶編程天才攜手加入華為,兩人的技術有多厲害

序言:俄羅斯1對00後的情侶是編程天才,兩人在畢業之後一起進入了華為公司,在網路上很多媒體都誇這對情侶的編程能力特別強,大家對於華為公司都非常的熟悉,現在市面上的華為手機和電子產品也是非常的出名,這對情侶 the編程技術也是非常優秀的,所以才會被華為公司錄取,而且女生曾經還獲得過世界冠軍,參加過很多比賽,所以能力也是毋庸置疑的男孩子的能力也非常的強大,也參加過很多的編程比賽,兩個人的能力不僅得到了華為公司的認可,也讓很多網友都羨慕不已,因為這對情侶不僅有著才華,還有著超高的顏值。

三、編程技術

俄羅斯00後的情侶技術非常的厲害,你自己編程設計軟體,並且還能夠進行後台維護,甚至可以做到自己編程設計防火牆,因為這兩人有著非常強的邏輯性,是很有潛力的,曾經也是編程界的世界冠軍,加入華為公司也能夠讓華為公司變得更加強大。

Ⅳ 游戲編程分兩個人,該如何分工

通常游戲策劃在大部分公司都會有其更詳盡的分工,如下:
游戲主策劃:又稱為游戲策劃主管。游戲項目的整體策劃者,主要工作職責在於設計游戲的整體概念以及日常工作中的管理和協調。同時負責指導策劃組以下的成員進行游戲設計工作。
游戲系統策劃:又稱為游戲規則設計師。一般主要負責游戲的一些系統規則的編寫,系統策劃和程序設計者的工作比較緊密。例如組隊、戰斗、幫派、排行榜、好友等系統,需要提供界面及界面操作、邏輯判斷流程圖、各種提示信息等。
游戲數值策劃:又稱為游戲平衡性設計師。一般主要負責游戲平衡性方面的規則和系統的設計,包括ai、關卡等,除了劇情方面以外的內容都需要數值策劃負責游戲數值策劃的日常工作和數據打的交道比較多,如你在游戲中所見的武器傷害值、hp值,甚至包括戰斗的公式等等都由數值策劃所設計。
游戲關卡策劃:又稱為游戲關卡設計師。主要負責游戲場景的設計以及任務流程、關卡難度的設計,其工作包羅萬象,包括場景中的怪物分布、ai設計以及游戲中的陷阱等等都會涉及。簡單來說,關卡策劃就是游戲世界的主要創造者之一。
游戲劇情策劃:又稱為游戲文案策劃。一般負責游戲中的文字內容的設計,包括但不限於世界觀架構、主線、支線任務設計、職業物品說明、局部文字潤色等。游戲的劇情策劃不僅僅只是自己埋頭寫游戲劇情而已,而且還要與關卡策劃者配合好設計游戲關卡的工作。
游戲腳本策劃:主要負責游戲中腳本程序的編寫,包括但不限於各種技能腳本、怪物ai、較復雜的任務腳本編寫。類同於程序員但又不同於程序員,因為會負責游戲概念上的一些設計工作。通常是游戲設計的執行者。
根據上面的分工可見,想要成為一名合格的游戲策劃必須具備有一定的特長和專業的知識。

Ⅵ 核桃編程可以一個賬號兩個人用嗎

不可以一個賬號兩個人用。
核桃編程是一個幼兒編程培訓機構,分線上班和線下班。無論是線上班還是線下班,都是一個幼兒對應一個學習賬號,兩個人是用不了的,老師是會核對學習名單的。
核桃編程是面向青少年的開源編程科技創新平台,通過自主研發開源編程工具,打造青少年編程創新社區及青少年編程開源生態。

Ⅶ 用C語言程序編寫「搶24」游戲,規則就是兩個人,第一個人從數字1開始,可以說1或者1和2,第二個人

摘要 您好,從撲克中每次取出4張牌。使用加減乘除,第一個能得出24者為贏。(其中,J代表11,Q代表12,K代表13,A代表1),按照要求編程解決24點游戲。

Ⅷ 用Java編程。實現兩個人對決。有血量有防禦。有攻擊力

幾天前有人提了個類似的問題,我當時寫了,但是忘記了沒有回復。現在發給你參考參考

<!----攻擊力=攻擊+隨機運氣暴擊---->
<!-----防禦力能抵制等量的傷害----->
<!----運氣值決定回血量和回血次數--->

*********lucy和jcak進入了角斗場*********
lucy初始狀態:血:1000攻:290防:60運氣:8
jcak初始狀態:血:1200攻:200防:120運氣:10
===========第1回合=============
lucy對jcak造成了362點傷害
運氣事件:jcak吃了血瓶增加了30點生命值
jcak對lucy造成了250點傷害
===========第2回合=============
lucy對jcak造成了322點傷害
jcak對lucy造成了260點傷害
運氣事件:lucy吃了血瓶增加了35點生命值
===========第3回合=============
lucy對jcak造成了362點傷害
運氣事件:jcak吃了血瓶增加了15點生命值
jcak對lucy造成了270點傷害
運氣事件:lucy吃了血瓶增加了15點生命值
===========第4回合=============
lucy對jcak造成了338點傷害
jcak對lucy造成了280點傷害
運氣事件:lucy吃了血瓶增加了5點生命值
===========第5回合=============
lucy對jcak造成了298點傷害
運氣事件:jcak吃了血瓶增加了45點生命值
jcak對lucy造成了260點傷害
===========第6回合=============
lucy對jcak造成了346點傷害
lucy取得了勝利

參考代碼。在附件


Ⅸ 核桃編程可以兩個人用一個賬號嗎

可以的。
核桃編程支持在不同設備上登錄同一賬戶,這樣就可以做到兩人使用一個賬戶了,核桃編程平台從容易入門的圖形化編程語言入手,培養青少年的編程興趣,逐漸全面提升抽象思維和演算法建模能力。
核桃編程,成立於2017年8月,主要提供在線少兒編程教學服務和課程產品,目前,核桃編程已於2018年6月,2019年2月完成了兩輪A系列輪融資,總額已超過2億元,截至2019年4月,核桃編程同期在讀學員超35萬,為所有少兒編程機構里學生人數最多。

Ⅹ 喬布斯和馬雲這兩個人會電腦編程嗎

比爾·蓋茨曾嘲笑過喬布斯,連程序都不會編;


馬雲用一個美麗的構想籠絡了一幫程序高手為他編程;


從這點足以說明,技術重要,思想更重要!技術是死的,思想是活的;


這個世界有太多的技術人才,程序天才;但喬布斯,馬雲這類人太少了;

熱點內容
內置存儲卡可以拆嗎 發布:2025-05-18 04:16:35 瀏覽:335
編譯原理課時設置 發布:2025-05-18 04:13:28 瀏覽:378
linux中進入ip地址伺服器 發布:2025-05-18 04:11:21 瀏覽:612
java用什麼軟體寫 發布:2025-05-18 03:56:19 瀏覽:32
linux配置vim編譯c 發布:2025-05-18 03:55:07 瀏覽:107
砸百鬼腳本 發布:2025-05-18 03:53:34 瀏覽:943
安卓手機如何拍視頻和蘋果一樣 發布:2025-05-18 03:40:47 瀏覽:739
為什麼安卓手機連不上蘋果7熱點 發布:2025-05-18 03:40:13 瀏覽:803
網卡訪問 發布:2025-05-18 03:35:04 瀏覽:511
接收和發送伺服器地址 發布:2025-05-18 03:33:48 瀏覽:371