Giúp đỡ game Battleship 2 người chơi kết nối qua socket TCP

myhanh1303

New Member
24/4/14
9
0
1
27
Mình đang cần xây dựng 1 game battleship (game đặt thuyền và bắn) có 2 người chơi giao tiếp qua giao thức TCP socket.
Ý tưởng của mình là 2 người chơi, 1 người đóng vài trò server, 1 người đóng vai trò client, người là server sẽ tạo kết nối.
Ý tưởng cụ thể của mình là: giao diện trò chơi là giao diện đồ họa, có các menu. khi nhấn vào menu new game thì tạo 1 kết nối socket và chờ phía client, người chơi đóng vai trò client thì sẽ chọn menu joingame, khi đó hiện 1 hộp thoại yêu cầu nhập ip, nếu đúng thì kết nối.
khi kết nối thành công thì ở 2 phía hiện 1 bản đồ (cái này mình chưa biết tạo kiểu gì, là button hay là 1 dạng swing nào đó) và đây là lúc 2 người chơi đặt thuyền. cái này mình cũng không biết làm sao để lưu giữ vị trí các thuyền để sau này biết có bắn trúng hay không.
Hiện mình mới biết tạo 1 frame với các menu new game, join game, exit. chưa có gì cả.
các bạn hướng dẫn mình với!
 

kekedaine

Member
5/3/11
76
1
8
với những câu hỏi mang tính chất chưa tìm hiểu gì về cái định làm thì ko có ai giúp bạn đâu. Mà sao mới lẹt đẹt biết vài thứ cơ bản đã làm cái này trời.
 

myhanh1303

New Member
24/4/14
9
0
1
27
nhưng mà mình chưa biết tìm hiểu cái gì, đang nhờ các bạn giúp mình mà :(
 

myhanh1303

New Member
24/4/14
9
0
1
27
giờ mình phải học những gì để làm được những thứ đó nhỉ? ai có video hướng dẫn về mấy mảng này thì share cho mình với :(
 

JackV

Administrator
Staff member
battleship thể thiện trên một mặt phẳng nhiều ô, khi người chơi đặt thuyền thì mỗi thuyền sẽ chiếm một số ô nào đó, vậy bạn quy định mặt phẳng nhiều ô là một mảng hai chiều gồm tất cả các index có giá trị 0, khi người chơi đặt thuyền thì bạn đổi các index mà thuyền đó chiếm theo số của thuyền, vậy là dễ xác định rồi.
 
  • Like
Reactions: myhanh1303

JackV

Administrator
Staff member
giờ mình phải học những gì để làm được những thứ đó nhỉ? ai có video hướng dẫn về mấy mảng này thì share cho mình với :(
Câu này khó trả lời lắm, bạn biết code tcp/ip rồi thì phần còn lại tùy thuộc các bạn cấu trúc như thế nào để biết được bạn cần gì thôi.
 
  • Like
Reactions: myhanh1303

myhanh1303

New Member
24/4/14
9
0
1
27
bạn ơi, mình muốn làm trên giao diện đồ họa thì dùng đối tượng swing nào để tạo cái mặt phẳng đó vậy?
khi hai người chơi bước vào giai đoạn bắn thuyền của nhau, giả sử 1 người chơi bấm vào 1 ô để bắn, tức là phải gửi dữ liệu qua socket đến bên kia (và bên kia phải check để biết bắn trúng hay không) vậy cái dữ liệu gửi đi đó thuộc đối tượng gì vậy và gửi đi như thế nào?
Mình mới biết cách gửi 2 đối tượng qua socket là gửi string (sử dụng PrintStream ) và gửi object (sử dụng ObjectOutputStream và serializable gì đấy)
 

myhanh1303

New Member
24/4/14
9
0
1
27
cảm ơn bạn nhiều nhé, bạn nhiệt tình quá :)
mình còn mấy ngày nữa để làm game này, có gì mình cứ vào topic này hỏi, mong bạn giúp đỡ nhé :D

cái canvas đó trong netbean kéo thả có không bạn?
 

nong_dan

Active Member
21/4/11
326
95
28
giờ mình phải học những gì để làm được những thứ đó nhỉ? ai có video hướng dẫn về mấy mảng này thì share cho mình với :(
Thật sự để mà tìm hiểu để viết game này trong một chốc một lát quả rất khó. Bạn phải học được ít nhất những cái sau: + tìm hiểu về Swing. Ở đây bạn chỉ cần tìm hiểu viết thế nào được một giao diện nho nhỏ => tìm hiểu trực tiếp JFrame, JPanel, Jbutton, JComponent và quan trọng là Layout và cách sử dụng Event(củ thể hơn là Action Listener). Mấy cái khác sẽ hoàn thiện nếu trong lúc lập trình bạn cần. Sau đó học các kết nối giữa server và client thông qua giao thức TCP bằng java. Nâng cao hơn có thể dùng multithreading trong đó( một server kết nối với hai client trở lên).
Còn về game này thì nếu bạn muốn được điểm cao thì ko ai làm chỉ có 1 server chơi với 1 client cả. Mà sẽ có 1 server đứng giữa và kết nối 2 client chơi với nhau.
 
  • Like
Reactions: myhanh1303

Joe

Thành viên VIP
21/1/13
2,969
1,310
113
Programming a game for fun is only enjoyable when the programmer knows how to materialize his/her gaming idea. Asking for tips and helps is like drinking an old cup of java (or cafe). If you don't master the OOP basics it's futile to give you anything. Neither a well-intended tip nor a willing help.
 

myhanh1303

New Member
24/4/14
9
0
1
27
Mình nghĩ thế này: Việc mình hỏi các bạn những thứ cơ bản (cơ bản đối với các bạn nhưng lại là nâng cao đối với mình) cũng là một cách học. Cái hay nhất của nó là mình mắc ở đâu, hỏi các bạn ở đó và các bạn trả lời giúp mình ngay thì sẽ giúp mình rất nhiều hơn là mình đi học lại java basic từ đầu (thực ra mình cũng đã đọc nhiều về java basic và java swing trong mấy ngày qua nhưng chẳng vào được bao nhiêu, mình nghĩ là chỉ có 2 cách nhanh lên trình độ:
  1. Xem video, cách này thì mình đã xem qua bộ video về swing của blog study and share rồi. video rất bổ ích nhưng mình nghĩ là áp dụng vào làm game battleship này thì hơi khó, khó ở những chỗ mình đã thắc mắc đó. vậy nên, nếu ai có video hướng dẫn gì cụ thể hơn, gần hơn với việc tạo swing liên quan đến game battleship và video về socket TCP thì xin share cho mình, mình cảm ơn rất nhiều.
  2. Hỏi và có người giúp đỡ ngay thì trình độ mình mới lên được. cách này mình đang sử dụng tại diễn đàn ta, và thực sự là đã có những bạn giúp đỡ mình nhiệt tình, mình rất cảm ơn!

Và điều cuối cùng mình muốn nói là mình xin các bạn: khi mình hỏi gì thì các bạn cứ hướng dẫn mình tận tình, đối với mình đó là 1 cách học hay và lên trình độ. ít nhất là đối với trình độ của mình hiện giờ. Câu nói của Joe rất đúng, nhưng chỉ đúng khi mình đã master và có 1 trình độ nhất định, khi đó thay vì đòi hướng dẫn những thứ cơ bản thế này, mình sẽ chỉ hỏi các bạn thật nhiều ý tưởng và cống hiến cũng thật nhiều cho forum.
 

phu0ng2013

Member
19/2/14
39
9
8
32
Ý Joe là bạn luyện tập chưa lâu đã muốn bứt phá, về lâu dài bạn sẽ bị đuối mặc dù là hoàn thành. Hiện giờ là bạn đang lắp ráp các mảng nhỏ để hoàn thành mảng lớn, nhưng khi xong thì bạn sẽ không đủ kiên nhẫn gọt dũa để hoàn thiện, đôi khi là phải xây lại các mảng nhỏ.
 
  • Like
Reactions: myhanh1303

Joe

Thành viên VIP
21/1/13
2,969
1,310
113
Thank you phuOng,
that's exactly what I've in mind. If Miss Myhanh asked for the game rules and if I know the rules then I'll be happy to to explain her. But what she wants is to be led step by step to her programming goal. And that is impossible. Her game, as she described and wanted, is quite complicated. It involves:
- GUI (e.g. swing),
- TCP/IP (networking),
- Client/Server (multithreading/synchronization)
all these issues are highly complex and complicated and require a very good basic knowledge.
You're right, PhuOng, a babe learns to scrawl (basics) before it starts to walk then to run (advanced). Miss Myhang is a babe who wants immediately partake an Olympic marathon race...
 
  • Like
Reactions: myhanh1303

myhanh1303

New Member
24/4/14
9
0
1
27
mình còn 1 tuần lễ nữa liệu có hoàn thành được không nhỉ?
các bạn có thể share cho mình tài liệu về các mảng này được không?
mình cảm ơn rất nhiều !
 

Joe

Thành viên VIP
21/1/13
2,969
1,310
113
Sửa lần cuối:
  • Like
Reactions: myhanh1303

myhanh1303

New Member
24/4/14
9
0
1
27
cảm ơn Joe rất nhiều nhưng mã nguồn này chỉ hướng dẫn 1 game battleship đơn giản chơi trên console, cái phần quan trọng là swing và socket thì không có :(
mình cũng đã google nhiều những vẫn chưa tìm được 1 mã nguồn nào đúng yêu cầu là: game Battleship chơi qua mạng cả
 

Joe

Thành viên VIP
21/1/13
2,969
1,310
113
Miss Myhanh,
study the Chat-threads of the C/S folder (for example this) and try to design your game and post here and I will assist you to accomplish your project. You can only learn by the wisdom of "No-pain-No-gain".
 
  • Like
Reactions: myhanh1303