Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Java программирование > Общие вопросы по Java, Java SE, Kotlin
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.12.2008, 19:53   #1
maxxozz
 
Регистрация: 18.07.2008
Сообщений: 3
По умолчанию Как реализовать игру крестики-нолики по сети

У меня такой вопрос: как написать игру крестики-нолики по сети? Т.е. нужно не через инет, а компьютер-компьютер. Нужно ли делать чтоб один из этих компьютеров был сервером? или же можно как то сделать чтоб на прямую передовались данные компьютер-компьютер. Можно ли как-нибудь реализовать это через сокеты? Помогите Плиз написать.
maxxozz вне форума Ответить с цитированием
Старый 22.12.2008, 19:54   #2
Alar
Александр
Администратор
 
Аватар для Alar
 
Регистрация: 28.10.2006
Сообщений: 17,501
По умолчанию

Через сокеты можно, есть статьи (Delphi) - pblog.ru.
Alar вне форума Ответить с цитированием
Старый 23.12.2008, 19:01   #3
bohdan4ik
Рэдиска
Форумчанин
 
Регистрация: 10.09.2008
Сообщений: 250
По умолчанию

А через и-нет это не компьютер-компьютер?..
bohdan4ik вне форума Ответить с цитированием
Старый 23.12.2008, 19:33   #4
MaTBeu
Eclipse Foundation
Старожил
 
Аватар для MaTBeu
 
Регистрация: 19.09.2007
Сообщений: 2,604
По умолчанию

2Alar
Ну зачем же ему Делфи? Это ведь Java раздел.
Через сокеты нужно. Один сервер, юзает 4444 порт, а второй клиент "слушает" этот же 4444 порт.
Вобщем вот тут немного есть.
И вот тут еще немного (вроде похоже, но не тоже самое)
MaTBeu вне форума Ответить с цитированием
Старый 23.12.2008, 20:28   #5
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

Сейчас пишу морской бой(сетевая игра). Есть такой класс
Код:
package battleship;

import java.net.*;
import java.io.*;

public class Connection implements Runnable
{
	private String IPAddress;
	private int port;
	private boolean connected = false;
	private Socket link;
	private ObjectInputStream input;
	private ObjectOutputStream output;

	private volatile Object objectQueue[] = new Object[0];


	public Connection(int portNumber, int seconds) throws SocketException
	{
		port = portNumber;
		try
		{
			ServerSocket socket = new ServerSocket(port, 1);
			socket.setSoTimeout(seconds*1000);
			link = socket.accept();
			output = new ObjectOutputStream( link.getOutputStream() );
			output.flush();

			input = new ObjectInputStream( link.getInputStream() );

			IPAddress = link.getInetAddress().toString();
			connected = true;
			Thread go = new Thread(this, "ObjectQueue");
			go.setDaemon(true);
			go.start();
		}
		catch (IOException e)
		{
			e.printStackTrace(); //code to handle error here
		}
	}

	public Connection(int portNumber) throws SocketException
	{
		this(portNumber, 0);
	}

	public Connection(String address, int portNumber) throws UnknownHostException
	{
		IPAddress = address;
		port = portNumber;
		try
		{
			link = new Socket(IPAddress, port);
			output = new ObjectOutputStream( link.getOutputStream() );
			output.flush();

			input = new ObjectInputStream( link.getInputStream() );

			connected = true;
			Thread go = new Thread(this, "ObjectQueue");
			go.setDaemon(true);
			go.start();
		}
		catch (IOException e)
		{
			e.printStackTrace(); //code to handle error here
		}
	}

	/**
	* This method is never called directly, it is started automatically as a thread.
	*/
	public void run()
	{
		while (connected)
		{
			try
			{
				Object temp[] = new Object[objectQueue.length+1];
				for (int i=0;i<objectQueue.length;i++) temp[i]=objectQueue[i];
				temp[temp.length-1] = input.readObject();
				objectQueue = temp;

				Thread.sleep(0);		//not necessary unless something goes wrong
			}
			catch(IOException e)
			{
				e.printStackTrace();
				connected = false;
			}
			catch(ClassNotFoundException e)
			{
				e.printStackTrace();
				connected = false;
			}
			catch(InterruptedException e)
			{
				e.printStackTrace();
			}
		}
	}

	/**
	* True when the connection between two addresses has been established, and attempts to indicate
	* if the connection is still alive.
	* @return       boolean
	*/
	public boolean established()
	{
		return connected;
	}


	public Object getObject()
	{
		Object obj = null;

		if (objectQueue.length>0)
		{
			obj = objectQueue[0];

			Object temp[] = new Object[objectQueue.length-1];
			for (int i=0;i<temp.length;i++) temp[i]=objectQueue[i+1];
			objectQueue = temp;
		}
		return obj;
	}


	public void sendObject(Object obj)
	{
		if (connected)
		{
			try
			{
				output.writeObject(obj);
				output.flush();
			}
			catch(IOException e)
			{
				e.printStackTrace();
				connected = false;
				//javax.swing.JOptionPane.showMessageDialog(null, "Disconnected");
			}
		}
	}


	public int getPort()   {   return port;   }


	public String getOtherIP()
	{
		return (connected) ? IPAddress : "Not Connected";
	}


	static public String getMyIP()
	{
		try
		{
			return InetAddress.getLocalHost().toString();
		}
		catch(UnknownHostException e)
		{
			return "Unknown Host";
		}
	}

	/**
	* Cleans up resources.
	*/
	protected void finalize()
	{
		try
		{
			output.close();
			link.close();
			super.finalize();
		}
		catch(Throwable t)
		{
			t.printStackTrace();
		}
	}
}
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Старый 23.12.2008, 20:28   #6
Mitron
Форумчанин
 
Аватар для Mitron
 
Регистрация: 10.05.2007
Сообщений: 117
По умолчанию

Может что нужное будет...
Задачи на заказ

Блажен тот, кто ничего не знает: он не рискует быть не понятым.
Mitron вне форума Ответить с цитированием
Старый 24.12.2008, 06:51   #7
maxxozz
 
Регистрация: 18.07.2008
Сообщений: 3
По умолчанию

Спасибо. У одногруппника тоже морской бой)
maxxozz вне форума Ответить с цитированием
Старый 11.01.2009, 02:59   #8
maxxozz
 
Регистрация: 18.07.2008
Сообщений: 3
По умолчанию

Всем спс. тему можно close|delete
maxxozz вне форума Ответить с цитированием
Старый 06.12.2009, 13:42   #9
orkello
Новичок
Джуниор
 
Регистрация: 06.12.2009
Сообщений: 1
По умолчанию

Автор, на чем писал?
orkello вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
крестики нолики aesoem Общие вопросы Delphi 11 12.06.2011 11:32
Крестики-нолики ROD Gamedev - cоздание игр: Unity, OpenGL, DirectX 21 12.02.2011 00:15
Крестики нолики на C++ Alar Gamedev - cоздание игр: Unity, OpenGL, DirectX 11 15.03.2010 16:09
Крестики-нолики С++ ROD Помощь студентам 7 21.12.2008 20:07
Крестики - Нолики Иваненко Помощь студентам 6 09.05.2008 22:09