Initial Commit, first release
This commit is contained in:
commit
1ea8b01057
|
@ -0,0 +1,3 @@
|
|||
*.o
|
||||
moc_*
|
||||
viergewinnt-qt
|
|
@ -0,0 +1,328 @@
|
|||
#############################################################################
|
||||
# Makefile for building: viergewinnt-qt
|
||||
# Generated by qmake (2.01a) (Qt 4.4.3) on: Sa Nov 1 16:10:13 2008
|
||||
# Project: viergewinnt-qt.pro
|
||||
# Template: app
|
||||
# Command: /usr/bin/qmake -unix -o Makefile viergewinnt-qt.pro
|
||||
#############################################################################
|
||||
|
||||
####### Compiler, tools and options
|
||||
|
||||
CC = gcc
|
||||
CXX = g++
|
||||
DEFINES = -DQT_NO_DEBUG_OUTPUT -DQT_NO_DEBUG -DQT_GUI_LIB -DQT_NETWORK_LIB -DQT_CORE_LIB -DQT_SHARED
|
||||
CFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
|
||||
CXXFLAGS = -pipe -O2 -Wall -W -D_REENTRANT $(DEFINES)
|
||||
INCPATH = -I/usr/share/qt4/mkspecs/linux-g++ -I. -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtCore -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtNetwork -I/usr/include/qt4/QtGui -I/usr/include/qt4/QtGui -I/usr/include/qt4 -I. -I. -I.
|
||||
LINK = g++
|
||||
LFLAGS =
|
||||
LIBS = $(SUBLIBS) -L/usr/lib -lQtGui -lQtNetwork -lQtCore -lpthread
|
||||
AR = ar cqs
|
||||
RANLIB =
|
||||
QMAKE = /usr/bin/qmake
|
||||
TAR = tar -cf
|
||||
COMPRESS = gzip -9f
|
||||
COPY = cp -f
|
||||
SED = sed
|
||||
COPY_FILE = $(COPY)
|
||||
COPY_DIR = $(COPY) -r
|
||||
INSTALL_FILE = install -m 644 -p
|
||||
INSTALL_DIR = $(COPY_DIR)
|
||||
INSTALL_PROGRAM = install -m 755 -p
|
||||
DEL_FILE = rm -f
|
||||
SYMLINK = ln -sf
|
||||
DEL_DIR = rmdir
|
||||
MOVE = mv -f
|
||||
CHK_DIR_EXISTS= test -d
|
||||
MKDIR = mkdir -p
|
||||
|
||||
####### Output directory
|
||||
|
||||
OBJECTS_DIR = ./
|
||||
|
||||
####### Files
|
||||
|
||||
SOURCES = about.cpp \
|
||||
creategame.cpp \
|
||||
findserver.cpp \
|
||||
main.cpp \
|
||||
newgame.cpp \
|
||||
playerwait.cpp \
|
||||
renderarea.cpp \
|
||||
selectmaster.cpp \
|
||||
viergewinnt.cpp moc_about.cpp \
|
||||
moc_creategame.cpp \
|
||||
moc_findserver.cpp \
|
||||
moc_newgame.cpp \
|
||||
moc_playerwait.cpp \
|
||||
moc_renderarea.cpp \
|
||||
moc_selectmaster.cpp \
|
||||
moc_viergewinnt.cpp
|
||||
OBJECTS = about.o \
|
||||
creategame.o \
|
||||
findserver.o \
|
||||
main.o \
|
||||
newgame.o \
|
||||
playerwait.o \
|
||||
renderarea.o \
|
||||
selectmaster.o \
|
||||
viergewinnt.o \
|
||||
moc_about.o \
|
||||
moc_creategame.o \
|
||||
moc_findserver.o \
|
||||
moc_newgame.o \
|
||||
moc_playerwait.o \
|
||||
moc_renderarea.o \
|
||||
moc_selectmaster.o \
|
||||
moc_viergewinnt.o
|
||||
DIST = /usr/share/qt4/mkspecs/common/g++.conf \
|
||||
/usr/share/qt4/mkspecs/common/unix.conf \
|
||||
/usr/share/qt4/mkspecs/common/linux.conf \
|
||||
/usr/share/qt4/mkspecs/qconfig.pri \
|
||||
/usr/share/qt4/mkspecs/features/qt_functions.prf \
|
||||
/usr/share/qt4/mkspecs/features/qt_config.prf \
|
||||
/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
|
||||
/usr/share/qt4/mkspecs/features/default_pre.prf \
|
||||
/usr/share/qt4/mkspecs/features/release.prf \
|
||||
/usr/share/qt4/mkspecs/features/default_post.prf \
|
||||
/usr/share/qt4/mkspecs/features/warn_on.prf \
|
||||
/usr/share/qt4/mkspecs/features/qt.prf \
|
||||
/usr/share/qt4/mkspecs/features/unix/thread.prf \
|
||||
/usr/share/qt4/mkspecs/features/moc.prf \
|
||||
/usr/share/qt4/mkspecs/features/resources.prf \
|
||||
/usr/share/qt4/mkspecs/features/uic.prf \
|
||||
/usr/share/qt4/mkspecs/features/yacc.prf \
|
||||
/usr/share/qt4/mkspecs/features/lex.prf \
|
||||
viergewinnt-qt.pro
|
||||
QMAKE_TARGET = viergewinnt-qt
|
||||
DESTDIR =
|
||||
TARGET = viergewinnt-qt
|
||||
|
||||
first: all
|
||||
####### Implicit rules
|
||||
|
||||
.SUFFIXES: .o .c .cpp .cc .cxx .C
|
||||
|
||||
.cpp.o:
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
|
||||
|
||||
.cc.o:
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
|
||||
|
||||
.cxx.o:
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
|
||||
|
||||
.C.o:
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o "$@" "$<"
|
||||
|
||||
.c.o:
|
||||
$(CC) -c $(CFLAGS) $(INCPATH) -o "$@" "$<"
|
||||
|
||||
####### Build rules
|
||||
|
||||
all: Makefile $(TARGET)
|
||||
|
||||
$(TARGET): $(OBJECTS)
|
||||
$(LINK) $(LFLAGS) -o $(TARGET) $(OBJECTS) $(OBJCOMP) $(LIBS)
|
||||
|
||||
Makefile: viergewinnt-qt.pro /usr/share/qt4/mkspecs/linux-g++/qmake.conf /usr/share/qt4/mkspecs/common/g++.conf \
|
||||
/usr/share/qt4/mkspecs/common/unix.conf \
|
||||
/usr/share/qt4/mkspecs/common/linux.conf \
|
||||
/usr/share/qt4/mkspecs/qconfig.pri \
|
||||
/usr/share/qt4/mkspecs/features/qt_functions.prf \
|
||||
/usr/share/qt4/mkspecs/features/qt_config.prf \
|
||||
/usr/share/qt4/mkspecs/features/exclusive_builds.prf \
|
||||
/usr/share/qt4/mkspecs/features/default_pre.prf \
|
||||
/usr/share/qt4/mkspecs/features/release.prf \
|
||||
/usr/share/qt4/mkspecs/features/default_post.prf \
|
||||
/usr/share/qt4/mkspecs/features/warn_on.prf \
|
||||
/usr/share/qt4/mkspecs/features/qt.prf \
|
||||
/usr/share/qt4/mkspecs/features/unix/thread.prf \
|
||||
/usr/share/qt4/mkspecs/features/moc.prf \
|
||||
/usr/share/qt4/mkspecs/features/resources.prf \
|
||||
/usr/share/qt4/mkspecs/features/uic.prf \
|
||||
/usr/share/qt4/mkspecs/features/yacc.prf \
|
||||
/usr/share/qt4/mkspecs/features/lex.prf \
|
||||
/usr/lib/libQtGui.prl \
|
||||
/usr/lib/libQtNetwork.prl \
|
||||
/usr/lib/libQtCore.prl
|
||||
$(QMAKE) -unix -o Makefile viergewinnt-qt.pro
|
||||
/usr/share/qt4/mkspecs/common/g++.conf:
|
||||
/usr/share/qt4/mkspecs/common/unix.conf:
|
||||
/usr/share/qt4/mkspecs/common/linux.conf:
|
||||
/usr/share/qt4/mkspecs/qconfig.pri:
|
||||
/usr/share/qt4/mkspecs/features/qt_functions.prf:
|
||||
/usr/share/qt4/mkspecs/features/qt_config.prf:
|
||||
/usr/share/qt4/mkspecs/features/exclusive_builds.prf:
|
||||
/usr/share/qt4/mkspecs/features/default_pre.prf:
|
||||
/usr/share/qt4/mkspecs/features/release.prf:
|
||||
/usr/share/qt4/mkspecs/features/default_post.prf:
|
||||
/usr/share/qt4/mkspecs/features/warn_on.prf:
|
||||
/usr/share/qt4/mkspecs/features/qt.prf:
|
||||
/usr/share/qt4/mkspecs/features/unix/thread.prf:
|
||||
/usr/share/qt4/mkspecs/features/moc.prf:
|
||||
/usr/share/qt4/mkspecs/features/resources.prf:
|
||||
/usr/share/qt4/mkspecs/features/uic.prf:
|
||||
/usr/share/qt4/mkspecs/features/yacc.prf:
|
||||
/usr/share/qt4/mkspecs/features/lex.prf:
|
||||
/usr/lib/libQtGui.prl:
|
||||
/usr/lib/libQtNetwork.prl:
|
||||
/usr/lib/libQtCore.prl:
|
||||
qmake: FORCE
|
||||
@$(QMAKE) -unix -o Makefile viergewinnt-qt.pro
|
||||
|
||||
dist:
|
||||
@$(CHK_DIR_EXISTS) .tmp/viergewinnt-qt1.0.0 || $(MKDIR) .tmp/viergewinnt-qt1.0.0
|
||||
$(COPY_FILE) --parents $(SOURCES) $(DIST) .tmp/viergewinnt-qt1.0.0/ && $(COPY_FILE) --parents about.h creategame.h findserver.h newgame.h playerwait.h renderarea.h selectmaster.h viergewinnt.h .tmp/viergewinnt-qt1.0.0/ && $(COPY_FILE) --parents about.cpp creategame.cpp findserver.cpp main.cpp newgame.cpp playerwait.cpp renderarea.cpp selectmaster.cpp viergewinnt.cpp .tmp/viergewinnt-qt1.0.0/ && $(COPY_FILE) --parents viergewinnt-qt_en.ts .tmp/viergewinnt-qt1.0.0/ && (cd `dirname .tmp/viergewinnt-qt1.0.0` && $(TAR) viergewinnt-qt1.0.0.tar viergewinnt-qt1.0.0 && $(COMPRESS) viergewinnt-qt1.0.0.tar) && $(MOVE) `dirname .tmp/viergewinnt-qt1.0.0`/viergewinnt-qt1.0.0.tar.gz . && $(DEL_FILE) -r .tmp/viergewinnt-qt1.0.0
|
||||
|
||||
|
||||
clean:compiler_clean
|
||||
-$(DEL_FILE) $(OBJECTS)
|
||||
-$(DEL_FILE) *~ core *.core
|
||||
|
||||
|
||||
####### Sub-libraries
|
||||
|
||||
distclean: clean
|
||||
-$(DEL_FILE) $(TARGET)
|
||||
-$(DEL_FILE) Makefile
|
||||
|
||||
|
||||
mocclean: compiler_moc_header_clean compiler_moc_source_clean
|
||||
|
||||
mocables: compiler_moc_header_make_all compiler_moc_source_make_all
|
||||
|
||||
compiler_moc_header_make_all: moc_about.cpp moc_creategame.cpp moc_findserver.cpp moc_newgame.cpp moc_playerwait.cpp moc_renderarea.cpp moc_selectmaster.cpp moc_viergewinnt.cpp
|
||||
compiler_moc_header_clean:
|
||||
-$(DEL_FILE) moc_about.cpp moc_creategame.cpp moc_findserver.cpp moc_newgame.cpp moc_playerwait.cpp moc_renderarea.cpp moc_selectmaster.cpp moc_viergewinnt.cpp
|
||||
moc_about.cpp: about.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) about.h -o moc_about.cpp
|
||||
|
||||
moc_creategame.cpp: creategame.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) creategame.h -o moc_creategame.cpp
|
||||
|
||||
moc_findserver.cpp: selectmaster.h \
|
||||
creategame.h \
|
||||
viergewinnt.h \
|
||||
newgame.h \
|
||||
playerwait.h \
|
||||
about.h \
|
||||
findserver.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) findserver.h -o moc_findserver.cpp
|
||||
|
||||
moc_newgame.cpp: newgame.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) newgame.h -o moc_newgame.cpp
|
||||
|
||||
moc_playerwait.cpp: playerwait.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) playerwait.h -o moc_playerwait.cpp
|
||||
|
||||
moc_renderarea.cpp: viergewinnt.h \
|
||||
newgame.h \
|
||||
playerwait.h \
|
||||
renderarea.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) renderarea.h -o moc_renderarea.cpp
|
||||
|
||||
moc_selectmaster.cpp: selectmaster.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) selectmaster.h -o moc_selectmaster.cpp
|
||||
|
||||
moc_viergewinnt.cpp: newgame.h \
|
||||
playerwait.h \
|
||||
viergewinnt.h
|
||||
/usr/bin/moc-qt4 $(DEFINES) $(INCPATH) viergewinnt.h -o moc_viergewinnt.cpp
|
||||
|
||||
compiler_rcc_make_all:
|
||||
compiler_rcc_clean:
|
||||
compiler_image_collection_make_all: qmake_image_collection.cpp
|
||||
compiler_image_collection_clean:
|
||||
-$(DEL_FILE) qmake_image_collection.cpp
|
||||
compiler_moc_source_make_all:
|
||||
compiler_moc_source_clean:
|
||||
compiler_uic_make_all:
|
||||
compiler_uic_clean:
|
||||
compiler_yacc_decl_make_all:
|
||||
compiler_yacc_decl_clean:
|
||||
compiler_yacc_impl_make_all:
|
||||
compiler_yacc_impl_clean:
|
||||
compiler_lex_make_all:
|
||||
compiler_lex_clean:
|
||||
compiler_clean: compiler_moc_header_clean
|
||||
|
||||
####### Compile
|
||||
|
||||
about.o: about.cpp about.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o about.o about.cpp
|
||||
|
||||
creategame.o: creategame.cpp creategame.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o creategame.o creategame.cpp
|
||||
|
||||
findserver.o: findserver.cpp findserver.h \
|
||||
selectmaster.h \
|
||||
creategame.h \
|
||||
viergewinnt.h \
|
||||
newgame.h \
|
||||
playerwait.h \
|
||||
about.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o findserver.o findserver.cpp
|
||||
|
||||
main.o: main.cpp findserver.h \
|
||||
selectmaster.h \
|
||||
creategame.h \
|
||||
viergewinnt.h \
|
||||
newgame.h \
|
||||
playerwait.h \
|
||||
about.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o main.o main.cpp
|
||||
|
||||
newgame.o: newgame.cpp newgame.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o newgame.o newgame.cpp
|
||||
|
||||
playerwait.o: playerwait.cpp playerwait.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o playerwait.o playerwait.cpp
|
||||
|
||||
renderarea.o: renderarea.cpp renderarea.h \
|
||||
viergewinnt.h \
|
||||
newgame.h \
|
||||
playerwait.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o renderarea.o renderarea.cpp
|
||||
|
||||
selectmaster.o: selectmaster.cpp selectmaster.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o selectmaster.o selectmaster.cpp
|
||||
|
||||
viergewinnt.o: viergewinnt.cpp viergewinnt.h \
|
||||
newgame.h \
|
||||
playerwait.h \
|
||||
renderarea.h
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o viergewinnt.o viergewinnt.cpp
|
||||
|
||||
moc_about.o: moc_about.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_about.o moc_about.cpp
|
||||
|
||||
moc_creategame.o: moc_creategame.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_creategame.o moc_creategame.cpp
|
||||
|
||||
moc_findserver.o: moc_findserver.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_findserver.o moc_findserver.cpp
|
||||
|
||||
moc_newgame.o: moc_newgame.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_newgame.o moc_newgame.cpp
|
||||
|
||||
moc_playerwait.o: moc_playerwait.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_playerwait.o moc_playerwait.cpp
|
||||
|
||||
moc_renderarea.o: moc_renderarea.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_renderarea.o moc_renderarea.cpp
|
||||
|
||||
moc_selectmaster.o: moc_selectmaster.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_selectmaster.o moc_selectmaster.cpp
|
||||
|
||||
moc_viergewinnt.o: moc_viergewinnt.cpp
|
||||
$(CXX) -c $(CXXFLAGS) $(INCPATH) -o moc_viergewinnt.o moc_viergewinnt.cpp
|
||||
|
||||
####### Install
|
||||
|
||||
install: FORCE
|
||||
|
||||
uninstall: FORCE
|
||||
|
||||
FORCE:
|
||||
|
|
@ -0,0 +1,46 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "about.h"
|
||||
|
||||
AboutDialog::AboutDialog(QWidget *parent) : QDialog(parent) {
|
||||
// setFixedSize(320, 200);
|
||||
setWindowTitle(tr("Über"));
|
||||
setModal(Qt::WindowModal);
|
||||
|
||||
ok = new QPushButton(tr("Ok"));
|
||||
connect(ok, SIGNAL(clicked()), this, SLOT(accept()));
|
||||
head = new QLabel(tr("Netzwerk-VierGewinnt Client\nProgrammiert von seba\nwww.seba-geek.de"));
|
||||
head->setAlignment(Qt::AlignHCenter);
|
||||
body = new QLabel(tr("Erstes QT-Programm!\nDies ist ein Client für das VierGewinnt-Modul vom \"Generic Network-Server\". Endlich eine Verbesserung zum SDL-Client..."));
|
||||
body->setWordWrap(true);
|
||||
|
||||
layout = new QVBoxLayout;
|
||||
|
||||
layout->addWidget(head);
|
||||
layout->addSpacing(32);
|
||||
layout->addWidget(body);
|
||||
layout->addWidget(ok);
|
||||
|
||||
layout->setAlignment(head, Qt::AlignHCenter);
|
||||
|
||||
setLayout(layout);
|
||||
}
|
|
@ -0,0 +1,43 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __ABOUT_H
|
||||
#define __ABOUT_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QPushButton>
|
||||
#include <QVBoxLayout>
|
||||
#include <QLabel>
|
||||
|
||||
class AboutDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
AboutDialog(QWidget *parent=0);
|
||||
|
||||
private:
|
||||
QPushButton *ok;
|
||||
QLabel *head;
|
||||
QLabel *body;
|
||||
QVBoxLayout *layout;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,58 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "creategame.h"
|
||||
|
||||
CreateGameDialog::CreateGameDialog(QTcpSocket *_mysock, QWidget *parent) : QDialog(parent) {
|
||||
mysock = _mysock;
|
||||
setWindowTitle(tr("Neues Spiel"));
|
||||
|
||||
// stat = new QLabel("");
|
||||
gname = new QLabel(tr("Spielname"));
|
||||
editgname = new QLineEdit;
|
||||
ok = new QPushButton(tr("Ok"));
|
||||
connect(ok, SIGNAL(clicked()), this, SLOT(startListen()));
|
||||
cancel = new QPushButton(tr("Abbrechen"));
|
||||
connect(cancel, SIGNAL(clicked()), this, SLOT(reject()));
|
||||
|
||||
layout = new QGridLayout;
|
||||
// layout->addWidget(stat, 0, 0, 1, 2);
|
||||
layout->addWidget(gname, 1, 0);
|
||||
layout->addWidget(editgname, 1, 1);
|
||||
layout->addWidget(ok, 2, 0);
|
||||
layout->addWidget(cancel, 2, 1);
|
||||
|
||||
setLayout(layout);
|
||||
setModal(Qt::WindowModal);
|
||||
}
|
||||
|
||||
// void CreateGameDialog::reset() {
|
||||
// stat->setText("");
|
||||
// ok->show();
|
||||
// }
|
||||
|
||||
void CreateGameDialog::startListen() {
|
||||
QTextStream sockstream(mysock);
|
||||
if(editgname->text()=="")
|
||||
editgname->insert(tr("Unbenanntes Spiel"));
|
||||
sockstream << "CREATE " << editgname->text() << "\n";
|
||||
accept();
|
||||
}
|
|
@ -0,0 +1,59 @@
|
|||
#ifndef __CREATEGAME_H
|
||||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#define __CREATEGAME_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QString>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QGridLayout>
|
||||
#include <QPushButton>
|
||||
#include <QMessageBox>
|
||||
#include <QTextStream>
|
||||
#include <QTcpSocket>
|
||||
#include <sstream>
|
||||
|
||||
|
||||
class CreateGameDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
public:
|
||||
CreateGameDialog(QTcpSocket *_mysock, QWidget *parent=0);
|
||||
|
||||
// void reset();
|
||||
|
||||
private slots:
|
||||
void startListen();
|
||||
|
||||
private:
|
||||
QTcpSocket *mysock;
|
||||
|
||||
QGridLayout *layout;
|
||||
// QLabel *stat;
|
||||
QLabel *gname;
|
||||
QLineEdit *editgname;
|
||||
QPushButton *ok;
|
||||
QPushButton *cancel;
|
||||
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,348 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "findserver.h"
|
||||
|
||||
#include <QtNetwork>
|
||||
#include <QDataStream>
|
||||
#include <QtDebug>
|
||||
|
||||
FindServerWidget::FindServerWidget(QWidget *parent) : QWidget(parent) {
|
||||
setFixedSize(640, 480);
|
||||
setWindowTitle(tr("Sebas Netzwerk-VierGewinnt Client")+" - "+tr("Serverliste"));
|
||||
masterserver = "1.proj.seba-geek.de"; // srv1.proj.seba-geek.de
|
||||
masterport = 31415;
|
||||
|
||||
// net stuff
|
||||
mysock = new QTcpSocket;
|
||||
connect(mysock, SIGNAL(connected()), this, SLOT(procNet()));
|
||||
connect(mysock, SIGNAL(readyRead()), this, SLOT(procNet()));
|
||||
connect(mysock, SIGNAL(error(QAbstractSocket::SocketError)), this, SLOT(procNetError(QAbstractSocket::SocketError)));
|
||||
connect(mysock, SIGNAL(disconnected()), this, SLOT(procNetDisconnect()));
|
||||
|
||||
// dialoge
|
||||
masterdialog = new SelectMasterDialog(this);
|
||||
cgamedialog = new CreateGameDialog(mysock); /* , this */
|
||||
vwinwid = new VierGewinntWidget(mysock, this);
|
||||
about = new AboutDialog(this);
|
||||
|
||||
// networkbrowser
|
||||
nettable = new QTreeWidget;
|
||||
nettable->setColumnCount(5);
|
||||
// nettable->setMaximumWidth(400);
|
||||
QStringList header;
|
||||
header << tr("Id") << tr("Spielname") << tr("Spieler") << tr("Spielfeld") << tr("Gewinnt") << "";
|
||||
nettable->setHeaderLabels(header);
|
||||
// nettable->resizeColumnToContents(0);
|
||||
// nettable->resizeColumnToContents(1);
|
||||
// nettable->resizeColumnToContents(2);
|
||||
|
||||
// buttonreihe
|
||||
buttonrow = new QHBoxLayout;
|
||||
refresh = new QPushButton(tr("Erneuern"));
|
||||
connect(refresh, SIGNAL(clicked()), this, SLOT(refreshServerList()));
|
||||
create = new QPushButton(tr("Erstellen"));
|
||||
connect(create, SIGNAL(clicked()), this, SLOT(createGame()));
|
||||
join = new QPushButton(tr("Beitreten"));
|
||||
connect(join, SIGNAL(clicked()), this, SLOT(joinGame()));
|
||||
othermaster = new QPushButton(tr("Anderer Masterserver"));
|
||||
connect(othermaster, SIGNAL(clicked()), this, SLOT(changeMaster()));
|
||||
butabout = new QPushButton(tr("Über"));
|
||||
connect(butabout, SIGNAL(clicked()), about, SLOT(exec()));
|
||||
|
||||
|
||||
|
||||
buttonrow->addWidget(refresh);
|
||||
buttonrow->addWidget(create);
|
||||
buttonrow->addWidget(join);
|
||||
buttonrow->addStretch();
|
||||
buttonrow->addWidget(othermaster);
|
||||
buttonrow->addWidget(butabout);
|
||||
|
||||
|
||||
// network drunter
|
||||
status = new QTextEdit;
|
||||
status->setReadOnly(true);
|
||||
status->setMaximumHeight(80);
|
||||
addLog(tr("Drücke Erneuern um eine Serverliste zu erhalten"));
|
||||
|
||||
// layout stuff
|
||||
layout = new QVBoxLayout;
|
||||
|
||||
layout->addWidget(nettable);
|
||||
layout->addLayout(buttonrow);
|
||||
layout->addWidget(status);
|
||||
|
||||
setLayout(layout);
|
||||
|
||||
loginstate = 0;
|
||||
refreshonconnect = false;
|
||||
ingame = false;
|
||||
}
|
||||
|
||||
void FindServerWidget::refreshServerList() {
|
||||
if(mysock->state()==QTcpSocket::UnconnectedState) {
|
||||
refreshonconnect = true;
|
||||
startConnect();
|
||||
} else {
|
||||
QTextStream sockstream(mysock);
|
||||
addLog(tr("Fordere Liste an..."));
|
||||
nettable->clear();
|
||||
sockstream << "LIST\n";
|
||||
}
|
||||
}
|
||||
|
||||
void FindServerWidget::changeMaster() {
|
||||
// this->hide();
|
||||
masterdialog->setData(masterserver, masterport);
|
||||
masterdialog->show();
|
||||
if(masterdialog->exec()== QDialog::Accepted) {
|
||||
masterserver = masterdialog->getMasterServer();
|
||||
masterport = masterdialog->getMasterPort();
|
||||
mysock->close();
|
||||
startConnect();
|
||||
}
|
||||
}
|
||||
|
||||
void FindServerWidget::createGame() {
|
||||
if(mysock->state()==QTcpSocket::UnconnectedState)
|
||||
startConnect();
|
||||
// this->setDisabled(true);
|
||||
// this->hide();
|
||||
// cgamedialog->reset();
|
||||
cgamedialog->show();
|
||||
if(cgamedialog->exec()== QDialog::Accepted) {
|
||||
addLog(tr("Spiel erstellt"));
|
||||
vwinwid->init(7, 6);
|
||||
qDebug() << "i am still here!";
|
||||
} else {
|
||||
// this->setDisabled(false);
|
||||
// mysock->close();
|
||||
}
|
||||
// this->show();
|
||||
}
|
||||
|
||||
void FindServerWidget::joinGame() {
|
||||
QTreeWidgetItem *myitem = nettable->currentItem();
|
||||
if(myitem==0) {
|
||||
QMessageBox msgbox(this);
|
||||
msgbox.setText(tr("Es wurde kein Spiel zum beitreten ausgewählt"));
|
||||
msgbox.exec();
|
||||
return;
|
||||
}
|
||||
|
||||
if(mysock->state()==QTcpSocket::UnconnectedState)
|
||||
startConnect();
|
||||
|
||||
// initing the field (here we have the data)
|
||||
vwinwid->init(7, 6); // to be changed when custom fields are allowed
|
||||
|
||||
// get id
|
||||
int gameid = myitem->text(0).toInt();
|
||||
addLog(tr("Trete Spiel bei.."));
|
||||
QTextStream mytext(mysock);
|
||||
mytext << "JOIN " << gameid << "\n";
|
||||
}
|
||||
|
||||
void FindServerWidget::procNet() {
|
||||
QTextStream sockstream(mysock);
|
||||
QString tmpbuf;
|
||||
switch(loginstate) {
|
||||
case 0:{
|
||||
sockstream << "VERSION viergewinnt-qt\n";
|
||||
loginstate++;
|
||||
}break;
|
||||
case 1:
|
||||
tmpbuf = mysock->readLine();
|
||||
if(tmpbuf.contains("ACK VERSION")) {
|
||||
addLog(tr("Version akzeptiert"));
|
||||
sockstream << "SELECT VierGewinnt\n";
|
||||
loginstate++;
|
||||
} else {
|
||||
addLog(tr("Version nicht akzeptiert, kein GNS-Server!"));
|
||||
mysock->close();
|
||||
}
|
||||
break;
|
||||
case 2:
|
||||
tmpbuf = mysock->readLine();
|
||||
if(tmpbuf.contains("ACK SELECT")) {
|
||||
loginstate++;
|
||||
addLog(tr("Modul ausgewählt"));
|
||||
if(refreshonconnect) {
|
||||
refreshServerList();
|
||||
|
||||
refreshonconnect = false;
|
||||
}
|
||||
} else {
|
||||
addLog(tr("VierGewinnt-Modul nicht gefunden!"));
|
||||
mysock->close();
|
||||
}
|
||||
break;
|
||||
default:
|
||||
// list, join or error
|
||||
// tmpbuf = mysock->readLine();
|
||||
// addLog("Got INput: "+sockstream.readLine());
|
||||
|
||||
do {
|
||||
|
||||
QTextStream sockstream2(mysock->readLine());
|
||||
sockstream2 >> tmpbuf;
|
||||
|
||||
if(tmpbuf=="ERROR") {
|
||||
sockstream2 >> tmpbuf;
|
||||
int myerrno = tmpbuf.toInt();
|
||||
if(myerrno==121) {
|
||||
addLog(tr("Keine Spiele offen :("));
|
||||
} else if(myerrno==125) {
|
||||
addLog(tr("Konnte nicht beitreten: Spiel voll"));
|
||||
} else if(myerrno==124) {
|
||||
addLog(tr("Spiel konnte nicht gefunden werden"));
|
||||
} else if(tmpbuf=="Not") {
|
||||
sockstream2 >> tmpbuf;
|
||||
if(tmpbuf=="your") {
|
||||
vwinwid->ackAdd(false);
|
||||
}
|
||||
} else if(tmpbuf=="Row") {
|
||||
vwinwid->ackAdd(false);
|
||||
} else {
|
||||
qDebug() << "Unbekannter Fehler: " << tmpbuf;
|
||||
// addLog(tr("Unbekannter error: ")+tmpbuf);
|
||||
}
|
||||
} else if(tmpbuf=="GAME") {
|
||||
QStringList qstrlst;
|
||||
QString tmpbuf2;
|
||||
sockstream2 >> tmpbuf; // id
|
||||
qstrlst << tmpbuf;
|
||||
sockstream2 >> tmpbuf2; // player in
|
||||
sockstream2 >> tmpbuf; // player max
|
||||
tmpbuf2 += "/";
|
||||
tmpbuf2 += tmpbuf;
|
||||
sockstream2 >> tmpbuf; // game's name
|
||||
qstrlst << tmpbuf;
|
||||
qstrlst << tmpbuf2;
|
||||
sockstream2 >> tmpbuf2; // x
|
||||
sockstream2 >> tmpbuf; // y
|
||||
tmpbuf2 += "x";
|
||||
tmpbuf2 += tmpbuf;
|
||||
qstrlst << tmpbuf2;
|
||||
sockstream2 >> tmpbuf; // for the win
|
||||
qstrlst << tmpbuf;
|
||||
nettable->addTopLevelItem(new QTreeWidgetItem(qstrlst));
|
||||
} else if(tmpbuf=="ACK") {
|
||||
sockstream2 >> tmpbuf;
|
||||
if(tmpbuf=="CREATE") {
|
||||
addLog("Spiel erstellt, warte auf Mitspieler");
|
||||
vwinwid->clientExited();
|
||||
this->hide();
|
||||
vwinwid->show();
|
||||
} else if(tmpbuf=="JOIN") {
|
||||
// set data to mainwindow
|
||||
goToGameWindow();
|
||||
} else if(tmpbuf=="ADD") {
|
||||
vwinwid->ackAdd(true);
|
||||
}
|
||||
} else if(tmpbuf=="INFO") {
|
||||
sockstream2 >> tmpbuf;
|
||||
if(tmpbuf=="START") {
|
||||
vwinwid->startGame();
|
||||
qDebug() << "Game Started!";
|
||||
} else if(tmpbuf=="TURN") {
|
||||
sockstream2 >> tmpbuf;
|
||||
vwinwid->setTurn(tmpbuf.toInt()==1);
|
||||
} else if(tmpbuf=="ADD") {
|
||||
sockstream2 >> tmpbuf;
|
||||
vwinwid->add(tmpbuf.toInt(), VierGewinntWidget::o);
|
||||
} else if(tmpbuf=="GAME") {
|
||||
sockstream2 >> tmpbuf;
|
||||
if(tmpbuf=="STOP") {
|
||||
vwinwid->clientExited();
|
||||
}
|
||||
} else if(tmpbuf=="STATUS") {
|
||||
sockstream2 >> tmpbuf;
|
||||
vwinwid->newGame(tmpbuf=="WON");
|
||||
// REQ NEW GAME Message ignored, handled here
|
||||
} else if(tmpbuf=="CLIENT") {
|
||||
sockstream2 >> tmpbuf;
|
||||
if(tmpbuf=="NEW") {
|
||||
vwinwid->ackNewGame();
|
||||
}
|
||||
} else if(tmpbuf=="NEW") {
|
||||
sockstream2 >> tmpbuf;
|
||||
if(tmpbuf=="GAME") {
|
||||
vwinwid->startGame();
|
||||
}
|
||||
} else if(tmpbuf=="SCORE") {
|
||||
QString tmpbuf2;
|
||||
sockstream2 >> tmpbuf;
|
||||
sockstream2 >> tmpbuf2;
|
||||
vwinwid->setScore(tmpbuf.toInt(), tmpbuf2.toInt());
|
||||
}
|
||||
} else {
|
||||
qDebug() << "Unhandled TMPBUF: " << tmpbuf;
|
||||
}
|
||||
} while(!sockstream.atEnd());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void FindServerWidget::procNetError(QAbstractSocket::SocketError e) {
|
||||
switch(e) {
|
||||
case QAbstractSocket::HostNotFoundError:
|
||||
addLog(tr("Fehler: Der Master-Server Hostname konnte nicht aufgelöst werden!"));
|
||||
break;
|
||||
case QAbstractSocket::ConnectionRefusedError:
|
||||
addLog(tr("Fehler: Verbindungsversuch zum Master-Server ist fehlgeschlagen!"));
|
||||
break;
|
||||
case QAbstractSocket::RemoteHostClosedError:
|
||||
procNetDisconnect();
|
||||
break;
|
||||
default:
|
||||
addLog(tr("Netzwerkfehler: '%1'").arg(mysock->errorString()));
|
||||
break;
|
||||
}
|
||||
qDebug() << "Networ error: " << mysock->errorString();
|
||||
}
|
||||
|
||||
void FindServerWidget::procNetDisconnect() {
|
||||
vwinwid->hide();
|
||||
this->show();
|
||||
nettable->clear();
|
||||
addLog(tr("Die Verbindung zum Masterserver wurde getrennt."));
|
||||
}
|
||||
|
||||
void FindServerWidget::addLog(QString str) {
|
||||
status->append(str);
|
||||
qDebug() << "Log: " << str;
|
||||
}
|
||||
|
||||
void FindServerWidget::startConnect() {
|
||||
loginstate = 0;
|
||||
ingame = false;
|
||||
addLog((tr("Versuche Verbindung zu ")+masterserver+" ..."));
|
||||
mysock->connectToHost(masterserver, masterport);
|
||||
}
|
||||
|
||||
void FindServerWidget::goToGameWindow() {
|
||||
qDebug() << "SHOW togamewindow";
|
||||
this->hide();
|
||||
vwinwid->startGame();
|
||||
vwinwid->show();
|
||||
}
|
|
@ -0,0 +1,84 @@
|
|||
#ifndef __FINDSERVER_H
|
||||
#define __FINDSERVER_H
|
||||
|
||||
#include <QApplication>
|
||||
#include <QStringList>
|
||||
#include <QTreeWidget>
|
||||
#include <QTextEdit>
|
||||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <QLayout>
|
||||
#include <QPushButton>
|
||||
#include <QWidget>
|
||||
#include <QTcpSocket>
|
||||
|
||||
#include "selectmaster.h"
|
||||
#include "creategame.h"
|
||||
#include "viergewinnt.h"
|
||||
#include "about.h"
|
||||
|
||||
class FindServerWidget : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
FindServerWidget(QWidget *parent=0);
|
||||
|
||||
private slots:
|
||||
void refreshServerList();
|
||||
void changeMaster();
|
||||
void createGame();
|
||||
void joinGame();
|
||||
void procNet();
|
||||
void procNetError(QAbstractSocket::SocketError e);
|
||||
void procNetDisconnect();
|
||||
|
||||
private:
|
||||
// main stuff
|
||||
void addLog(QString str);
|
||||
void startConnect();
|
||||
void goToGameWindow();
|
||||
|
||||
// gns stuff
|
||||
QTcpSocket *mysock;
|
||||
QString masterserver;
|
||||
int masterport;
|
||||
bool ingame;
|
||||
bool refreshonconnect;
|
||||
int loginstate;
|
||||
CreateGameDialog *cgamedialog;
|
||||
|
||||
// gui stuff
|
||||
QTreeWidget *nettable;
|
||||
QHBoxLayout *buttonrow;
|
||||
QPushButton *refresh;
|
||||
QPushButton *create;
|
||||
QPushButton *join;
|
||||
QPushButton *othermaster;
|
||||
QPushButton *butabout;
|
||||
QTextEdit *status;
|
||||
SelectMasterDialog *masterdialog;
|
||||
QVBoxLayout *layout;
|
||||
VierGewinntWidget *vwinwid;
|
||||
AboutDialog *about;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,339 @@
|
|||
GNU GENERAL PUBLIC LICENSE
|
||||
Version 2, June 1991
|
||||
|
||||
Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
|
||||
Preamble
|
||||
|
||||
The licenses for most software are designed to take away your
|
||||
freedom to share and change it. By contrast, the GNU General Public
|
||||
License is intended to guarantee your freedom to share and change free
|
||||
software--to make sure the software is free for all its users. This
|
||||
General Public License applies to most of the Free Software
|
||||
Foundation's software and to any other program whose authors commit to
|
||||
using it. (Some other Free Software Foundation software is covered by
|
||||
the GNU Lesser General Public License instead.) You can apply it to
|
||||
your programs, too.
|
||||
|
||||
When we speak of free software, we are referring to freedom, not
|
||||
price. Our General Public Licenses are designed to make sure that you
|
||||
have the freedom to distribute copies of free software (and charge for
|
||||
this service if you wish), that you receive source code or can get it
|
||||
if you want it, that you can change the software or use pieces of it
|
||||
in new free programs; and that you know you can do these things.
|
||||
|
||||
To protect your rights, we need to make restrictions that forbid
|
||||
anyone to deny you these rights or to ask you to surrender the rights.
|
||||
These restrictions translate to certain responsibilities for you if you
|
||||
distribute copies of the software, or if you modify it.
|
||||
|
||||
For example, if you distribute copies of such a program, whether
|
||||
gratis or for a fee, you must give the recipients all the rights that
|
||||
you have. You must make sure that they, too, receive or can get the
|
||||
source code. And you must show them these terms so they know their
|
||||
rights.
|
||||
|
||||
We protect your rights with two steps: (1) copyright the software, and
|
||||
(2) offer you this license which gives you legal permission to copy,
|
||||
distribute and/or modify the software.
|
||||
|
||||
Also, for each author's protection and ours, we want to make certain
|
||||
that everyone understands that there is no warranty for this free
|
||||
software. If the software is modified by someone else and passed on, we
|
||||
want its recipients to know that what they have is not the original, so
|
||||
that any problems introduced by others will not reflect on the original
|
||||
authors' reputations.
|
||||
|
||||
Finally, any free program is threatened constantly by software
|
||||
patents. We wish to avoid the danger that redistributors of a free
|
||||
program will individually obtain patent licenses, in effect making the
|
||||
program proprietary. To prevent this, we have made it clear that any
|
||||
patent must be licensed for everyone's free use or not licensed at all.
|
||||
|
||||
The precise terms and conditions for copying, distribution and
|
||||
modification follow.
|
||||
|
||||
GNU GENERAL PUBLIC LICENSE
|
||||
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
|
||||
|
||||
0. This License applies to any program or other work which contains
|
||||
a notice placed by the copyright holder saying it may be distributed
|
||||
under the terms of this General Public License. The "Program", below,
|
||||
refers to any such program or work, and a "work based on the Program"
|
||||
means either the Program or any derivative work under copyright law:
|
||||
that is to say, a work containing the Program or a portion of it,
|
||||
either verbatim or with modifications and/or translated into another
|
||||
language. (Hereinafter, translation is included without limitation in
|
||||
the term "modification".) Each licensee is addressed as "you".
|
||||
|
||||
Activities other than copying, distribution and modification are not
|
||||
covered by this License; they are outside its scope. The act of
|
||||
running the Program is not restricted, and the output from the Program
|
||||
is covered only if its contents constitute a work based on the
|
||||
Program (independent of having been made by running the Program).
|
||||
Whether that is true depends on what the Program does.
|
||||
|
||||
1. You may copy and distribute verbatim copies of the Program's
|
||||
source code as you receive it, in any medium, provided that you
|
||||
conspicuously and appropriately publish on each copy an appropriate
|
||||
copyright notice and disclaimer of warranty; keep intact all the
|
||||
notices that refer to this License and to the absence of any warranty;
|
||||
and give any other recipients of the Program a copy of this License
|
||||
along with the Program.
|
||||
|
||||
You may charge a fee for the physical act of transferring a copy, and
|
||||
you may at your option offer warranty protection in exchange for a fee.
|
||||
|
||||
2. You may modify your copy or copies of the Program or any portion
|
||||
of it, thus forming a work based on the Program, and copy and
|
||||
distribute such modifications or work under the terms of Section 1
|
||||
above, provided that you also meet all of these conditions:
|
||||
|
||||
a) You must cause the modified files to carry prominent notices
|
||||
stating that you changed the files and the date of any change.
|
||||
|
||||
b) You must cause any work that you distribute or publish, that in
|
||||
whole or in part contains or is derived from the Program or any
|
||||
part thereof, to be licensed as a whole at no charge to all third
|
||||
parties under the terms of this License.
|
||||
|
||||
c) If the modified program normally reads commands interactively
|
||||
when run, you must cause it, when started running for such
|
||||
interactive use in the most ordinary way, to print or display an
|
||||
announcement including an appropriate copyright notice and a
|
||||
notice that there is no warranty (or else, saying that you provide
|
||||
a warranty) and that users may redistribute the program under
|
||||
these conditions, and telling the user how to view a copy of this
|
||||
License. (Exception: if the Program itself is interactive but
|
||||
does not normally print such an announcement, your work based on
|
||||
the Program is not required to print an announcement.)
|
||||
|
||||
These requirements apply to the modified work as a whole. If
|
||||
identifiable sections of that work are not derived from the Program,
|
||||
and can be reasonably considered independent and separate works in
|
||||
themselves, then this License, and its terms, do not apply to those
|
||||
sections when you distribute them as separate works. But when you
|
||||
distribute the same sections as part of a whole which is a work based
|
||||
on the Program, the distribution of the whole must be on the terms of
|
||||
this License, whose permissions for other licensees extend to the
|
||||
entire whole, and thus to each and every part regardless of who wrote it.
|
||||
|
||||
Thus, it is not the intent of this section to claim rights or contest
|
||||
your rights to work written entirely by you; rather, the intent is to
|
||||
exercise the right to control the distribution of derivative or
|
||||
collective works based on the Program.
|
||||
|
||||
In addition, mere aggregation of another work not based on the Program
|
||||
with the Program (or with a work based on the Program) on a volume of
|
||||
a storage or distribution medium does not bring the other work under
|
||||
the scope of this License.
|
||||
|
||||
3. You may copy and distribute the Program (or a work based on it,
|
||||
under Section 2) in object code or executable form under the terms of
|
||||
Sections 1 and 2 above provided that you also do one of the following:
|
||||
|
||||
a) Accompany it with the complete corresponding machine-readable
|
||||
source code, which must be distributed under the terms of Sections
|
||||
1 and 2 above on a medium customarily used for software interchange; or,
|
||||
|
||||
b) Accompany it with a written offer, valid for at least three
|
||||
years, to give any third party, for a charge no more than your
|
||||
cost of physically performing source distribution, a complete
|
||||
machine-readable copy of the corresponding source code, to be
|
||||
distributed under the terms of Sections 1 and 2 above on a medium
|
||||
customarily used for software interchange; or,
|
||||
|
||||
c) Accompany it with the information you received as to the offer
|
||||
to distribute corresponding source code. (This alternative is
|
||||
allowed only for noncommercial distribution and only if you
|
||||
received the program in object code or executable form with such
|
||||
an offer, in accord with Subsection b above.)
|
||||
|
||||
The source code for a work means the preferred form of the work for
|
||||
making modifications to it. For an executable work, complete source
|
||||
code means all the source code for all modules it contains, plus any
|
||||
associated interface definition files, plus the scripts used to
|
||||
control compilation and installation of the executable. However, as a
|
||||
special exception, the source code distributed need not include
|
||||
anything that is normally distributed (in either source or binary
|
||||
form) with the major components (compiler, kernel, and so on) of the
|
||||
operating system on which the executable runs, unless that component
|
||||
itself accompanies the executable.
|
||||
|
||||
If distribution of executable or object code is made by offering
|
||||
access to copy from a designated place, then offering equivalent
|
||||
access to copy the source code from the same place counts as
|
||||
distribution of the source code, even though third parties are not
|
||||
compelled to copy the source along with the object code.
|
||||
|
||||
4. You may not copy, modify, sublicense, or distribute the Program
|
||||
except as expressly provided under this License. Any attempt
|
||||
otherwise to copy, modify, sublicense or distribute the Program is
|
||||
void, and will automatically terminate your rights under this License.
|
||||
However, parties who have received copies, or rights, from you under
|
||||
this License will not have their licenses terminated so long as such
|
||||
parties remain in full compliance.
|
||||
|
||||
5. You are not required to accept this License, since you have not
|
||||
signed it. However, nothing else grants you permission to modify or
|
||||
distribute the Program or its derivative works. These actions are
|
||||
prohibited by law if you do not accept this License. Therefore, by
|
||||
modifying or distributing the Program (or any work based on the
|
||||
Program), you indicate your acceptance of this License to do so, and
|
||||
all its terms and conditions for copying, distributing or modifying
|
||||
the Program or works based on it.
|
||||
|
||||
6. Each time you redistribute the Program (or any work based on the
|
||||
Program), the recipient automatically receives a license from the
|
||||
original licensor to copy, distribute or modify the Program subject to
|
||||
these terms and conditions. You may not impose any further
|
||||
restrictions on the recipients' exercise of the rights granted herein.
|
||||
You are not responsible for enforcing compliance by third parties to
|
||||
this License.
|
||||
|
||||
7. If, as a consequence of a court judgment or allegation of patent
|
||||
infringement or for any other reason (not limited to patent issues),
|
||||
conditions are imposed on you (whether by court order, agreement or
|
||||
otherwise) that contradict the conditions of this License, they do not
|
||||
excuse you from the conditions of this License. If you cannot
|
||||
distribute so as to satisfy simultaneously your obligations under this
|
||||
License and any other pertinent obligations, then as a consequence you
|
||||
may not distribute the Program at all. For example, if a patent
|
||||
license would not permit royalty-free redistribution of the Program by
|
||||
all those who receive copies directly or indirectly through you, then
|
||||
the only way you could satisfy both it and this License would be to
|
||||
refrain entirely from distribution of the Program.
|
||||
|
||||
If any portion of this section is held invalid or unenforceable under
|
||||
any particular circumstance, the balance of the section is intended to
|
||||
apply and the section as a whole is intended to apply in other
|
||||
circumstances.
|
||||
|
||||
It is not the purpose of this section to induce you to infringe any
|
||||
patents or other property right claims or to contest validity of any
|
||||
such claims; this section has the sole purpose of protecting the
|
||||
integrity of the free software distribution system, which is
|
||||
implemented by public license practices. Many people have made
|
||||
generous contributions to the wide range of software distributed
|
||||
through that system in reliance on consistent application of that
|
||||
system; it is up to the author/donor to decide if he or she is willing
|
||||
to distribute software through any other system and a licensee cannot
|
||||
impose that choice.
|
||||
|
||||
This section is intended to make thoroughly clear what is believed to
|
||||
be a consequence of the rest of this License.
|
||||
|
||||
8. If the distribution and/or use of the Program is restricted in
|
||||
certain countries either by patents or by copyrighted interfaces, the
|
||||
original copyright holder who places the Program under this License
|
||||
may add an explicit geographical distribution limitation excluding
|
||||
those countries, so that distribution is permitted only in or among
|
||||
countries not thus excluded. In such case, this License incorporates
|
||||
the limitation as if written in the body of this License.
|
||||
|
||||
9. The Free Software Foundation may publish revised and/or new versions
|
||||
of the General Public License from time to time. Such new versions will
|
||||
be similar in spirit to the present version, but may differ in detail to
|
||||
address new problems or concerns.
|
||||
|
||||
Each version is given a distinguishing version number. If the Program
|
||||
specifies a version number of this License which applies to it and "any
|
||||
later version", you have the option of following the terms and conditions
|
||||
either of that version or of any later version published by the Free
|
||||
Software Foundation. If the Program does not specify a version number of
|
||||
this License, you may choose any version ever published by the Free Software
|
||||
Foundation.
|
||||
|
||||
10. If you wish to incorporate parts of the Program into other free
|
||||
programs whose distribution conditions are different, write to the author
|
||||
to ask for permission. For software which is copyrighted by the Free
|
||||
Software Foundation, write to the Free Software Foundation; we sometimes
|
||||
make exceptions for this. Our decision will be guided by the two goals
|
||||
of preserving the free status of all derivatives of our free software and
|
||||
of promoting the sharing and reuse of software generally.
|
||||
|
||||
NO WARRANTY
|
||||
|
||||
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
|
||||
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
|
||||
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
|
||||
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
|
||||
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
|
||||
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
|
||||
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
|
||||
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
|
||||
REPAIR OR CORRECTION.
|
||||
|
||||
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
|
||||
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
|
||||
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
|
||||
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
|
||||
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
|
||||
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
|
||||
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGES.
|
||||
|
||||
END OF TERMS AND CONDITIONS
|
||||
|
||||
How to Apply These Terms to Your New Programs
|
||||
|
||||
If you develop a new program, and you want it to be of the greatest
|
||||
possible use to the public, the best way to achieve this is to make it
|
||||
free software which everyone can redistribute and change under these terms.
|
||||
|
||||
To do so, attach the following notices to the program. It is safest
|
||||
to attach them to the start of each source file to most effectively
|
||||
convey the exclusion of warranty; and each file should have at least
|
||||
the "copyright" line and a pointer to where the full notice is found.
|
||||
|
||||
<one line to give the program's name and a brief idea of what it does.>
|
||||
Copyright (C) <year> <name of author>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License along
|
||||
with this program; if not, write to the Free Software Foundation, Inc.,
|
||||
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
|
||||
Also add information on how to contact you by electronic and paper mail.
|
||||
|
||||
If the program is interactive, make it output a short notice like this
|
||||
when it starts in an interactive mode:
|
||||
|
||||
Gnomovision version 69, Copyright (C) year name of author
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
|
||||
This is free software, and you are welcome to redistribute it
|
||||
under certain conditions; type `show c' for details.
|
||||
|
||||
The hypothetical commands `show w' and `show c' should show the appropriate
|
||||
parts of the General Public License. Of course, the commands you use may
|
||||
be called something other than `show w' and `show c'; they could even be
|
||||
mouse-clicks or menu items--whatever suits your program.
|
||||
|
||||
You should also get your employer (if you work as a programmer) or your
|
||||
school, if any, to sign a "copyright disclaimer" for the program, if
|
||||
necessary. Here is a sample; alter the names:
|
||||
|
||||
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.
|
||||
|
||||
<signature of Ty Coon>, 1 April 1989
|
||||
Ty Coon, President of Vice
|
||||
|
||||
This General Public License does not permit incorporating your program into
|
||||
proprietary programs. If your program is a subroutine library, you may
|
||||
consider it more useful to permit linking proprietary applications with the
|
||||
library. If this is what you want to do, use the GNU Lesser General
|
||||
Public License instead of this License.
|
|
@ -0,0 +1,39 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include <QApplication>
|
||||
#include <QTranslator>
|
||||
#include <QLocale>
|
||||
#include "findserver.h"
|
||||
|
||||
int main(int argc, char **argv) {
|
||||
QApplication app(argc, argv);
|
||||
|
||||
QLocale locale;
|
||||
QTranslator translator;
|
||||
translator.load(QString("trans/viergewinnt-qt_") + locale.name());
|
||||
app.installTranslator(&translator);
|
||||
|
||||
FindServerWidget fswid;
|
||||
fswid.show();
|
||||
|
||||
return app.exec();
|
||||
}
|
|
@ -0,0 +1,87 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "newgame.h"
|
||||
|
||||
|
||||
NewGameDialog::NewGameDialog(QTcpSocket *sock, QWidget *parent) : QDialog(parent) {
|
||||
mysock = sock;
|
||||
gameend = new QLabel("");
|
||||
newgame = new QLabel(tr("Ein neues Spiel?"));
|
||||
netplayer = new QLabel("");
|
||||
ok = new QPushButton(tr("Ok"));
|
||||
connect(ok, SIGNAL(clicked()), this, SLOT(localAck()));
|
||||
cancel = new QPushButton(tr("Abbrechen"));
|
||||
connect(cancel, SIGNAL(clicked()), this, SLOT(closeGame()));
|
||||
connect(this, SIGNAL(rejected()), this, SLOT(closeGame()));
|
||||
setWindowTitle(tr("Neues Spiel?"));
|
||||
reset(true);
|
||||
|
||||
buttonrow = new QHBoxLayout;
|
||||
buttonrow->addStretch();
|
||||
buttonrow->addWidget(ok);
|
||||
buttonrow->addStretch();
|
||||
buttonrow->addWidget(cancel);
|
||||
buttonrow->addStretch();
|
||||
|
||||
|
||||
layout = new QVBoxLayout;
|
||||
|
||||
layout->addWidget(gameend);
|
||||
layout->addSpacing(32);
|
||||
layout->addWidget(newgame);
|
||||
layout->addWidget(netplayer);
|
||||
layout->addLayout(buttonrow);
|
||||
|
||||
//center
|
||||
layout->setAlignment(gameend, Qt::AlignHCenter);
|
||||
layout->setAlignment(newgame, Qt::AlignHCenter);
|
||||
layout->setAlignment(netplayer, Qt::AlignHCenter);
|
||||
|
||||
setLayout(layout);
|
||||
|
||||
setModal(Qt::WindowModal);
|
||||
}
|
||||
|
||||
void NewGameDialog::reset(bool won) {
|
||||
netplayer->setText(tr("Dein Mispieler hat bisher noch nicht zugestimmt."));
|
||||
ok->setDisabled(false);
|
||||
if(won) {
|
||||
gameend->setText(tr("Whee, du hast gewonnen! :)"));
|
||||
} else {
|
||||
gameend->setText(tr("Du hast verloren -.-"));
|
||||
}
|
||||
}
|
||||
|
||||
void NewGameDialog::netPlayerAck() {
|
||||
netplayer->setText(tr("Dein Mispieler hat zugestimmt."));
|
||||
}
|
||||
|
||||
void NewGameDialog::localAck() {
|
||||
ok->setDisabled(true);
|
||||
QTextStream sockstream(mysock);
|
||||
sockstream << "ACK NEW GAME\n";
|
||||
}
|
||||
|
||||
void NewGameDialog::closeGame() {
|
||||
mysock->close();
|
||||
done(1);
|
||||
}
|
|
@ -0,0 +1,60 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __NEWGAME_H
|
||||
#define __NEWGAME_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QTcpSocket>
|
||||
#include <QTextStream>
|
||||
|
||||
|
||||
class NewGameDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
NewGameDialog(QTcpSocket *sock, QWidget *parent=0);
|
||||
|
||||
void reset(bool won);
|
||||
void netPlayerAck();
|
||||
|
||||
private slots:
|
||||
void localAck();
|
||||
void closeGame();
|
||||
|
||||
private:
|
||||
QVBoxLayout *layout;
|
||||
QHBoxLayout *buttonrow;
|
||||
QLabel *gameend;
|
||||
QLabel *newgame;
|
||||
QLabel *netplayer;
|
||||
QPushButton *ok;
|
||||
QPushButton *cancel;
|
||||
QTcpSocket *mysock;
|
||||
|
||||
bool myack, youack;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,45 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "playerwait.h"
|
||||
|
||||
PlayerWaitDialog::PlayerWaitDialog(QTcpSocket *sock, QWidget *parent) : QDialog(parent) {
|
||||
mysock = sock;
|
||||
cancel = new QPushButton(tr("Abbrechen"));
|
||||
connect(cancel, SIGNAL(clicked()), this, SLOT(closeGame()));
|
||||
connect(this, SIGNAL(rejected()), this, SLOT(closeGame()));
|
||||
waiting = new QLabel(tr("Warte auf anderen Spieler..."));
|
||||
setWindowTitle(tr("Auf Spieler warten"));
|
||||
|
||||
layout = new QVBoxLayout;
|
||||
layout->addWidget(waiting);
|
||||
layout->addStretch();
|
||||
layout->addWidget(cancel);
|
||||
|
||||
setLayout(layout);
|
||||
|
||||
setModal(Qt::WindowModal);
|
||||
}
|
||||
|
||||
void PlayerWaitDialog::closeGame() {
|
||||
mysock->close();
|
||||
done(1);
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __PLAYERWAIT_H
|
||||
#define __PLAYERWAIT_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
#include <QTcpSocket>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
class PlayerWaitDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
PlayerWaitDialog(QTcpSocket *sock, QWidget *parent=0);
|
||||
|
||||
private slots:
|
||||
void closeGame();
|
||||
|
||||
private:
|
||||
QVBoxLayout *layout;
|
||||
QTcpSocket *mysock;
|
||||
QPushButton *cancel;
|
||||
QLabel *waiting;
|
||||
|
||||
};
|
||||
|
||||
|
||||
#endif
|
|
@ -0,0 +1,108 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "renderarea.h"
|
||||
|
||||
#include <QPainter>
|
||||
|
||||
RenderArea::RenderArea(QWidget *parent) : QWidget(parent) {
|
||||
QSizePolicy tmppol;
|
||||
tmppol.setHorizontalPolicy(QSizePolicy::Maximum);
|
||||
tmppol.setVerticalPolicy(QSizePolicy::Maximum);
|
||||
setSizePolicy(tmppol);
|
||||
|
||||
// this->antialiased = true;
|
||||
|
||||
// pens
|
||||
xpen.setColor(Qt::green);
|
||||
xpen.setWidth(10);
|
||||
xpen.setJoinStyle(Qt::RoundJoin);
|
||||
xpen.setCapStyle(Qt::RoundCap);
|
||||
|
||||
ypen.setColor(Qt::red);
|
||||
ypen.setWidth(10);
|
||||
|
||||
mfact = 0.75;
|
||||
feld = 0; // just to clarify, also set in next statement
|
||||
setFeldInfo(7, 6, 0);
|
||||
}
|
||||
|
||||
void RenderArea::setFeldInfo(int _x, int _y, VierGewinntWidget::Stein **_feld) {
|
||||
fx = _x;
|
||||
fy = _y;
|
||||
feld = _feld;
|
||||
}
|
||||
|
||||
QSize RenderArea::minimumSizeHint() const {
|
||||
return QSize(320, 240);
|
||||
}
|
||||
|
||||
QSize RenderArea::sizeHint() const {
|
||||
return QSize(640, 480);
|
||||
}
|
||||
|
||||
void RenderArea::paintEvent(QPaintEvent * /*event*/) {
|
||||
QPainter painter(this);
|
||||
painter.setRenderHint(QPainter::Antialiasing, true);
|
||||
// Start with grid
|
||||
int fsize = std::min(width()/fx, height()/fy);
|
||||
// painter.drawLine(0, 0, width(), height());
|
||||
painter.translate((width()-fsize*fx)/2, (height()-fsize*fy)/2);
|
||||
for(int i=0; i<=fx; i++)
|
||||
painter.drawLine(i*fsize, 0, i*fsize, fsize*fy);
|
||||
for(int i=0; i<=fy; i++)
|
||||
painter.drawLine(0, i*fsize, fsize*fx, i*fsize);
|
||||
|
||||
|
||||
if(feld==0)
|
||||
return;
|
||||
|
||||
// paint x and o
|
||||
for(int i=0; i<fx; i++) {
|
||||
for(int j=0; j<fy; j++) {
|
||||
if(feld[i][j]!=VierGewinntWidget::n) {
|
||||
painter.save();
|
||||
painter.translate(i*fsize+fsize/2, j*fsize+fsize/2);
|
||||
if(feld[i][j]==VierGewinntWidget::x) {
|
||||
painter.setPen(xpen);
|
||||
painter.drawLine(-fsize/2*mfact, -fsize/2*mfact, fsize/2*mfact, fsize/2*mfact);
|
||||
painter.drawLine(-fsize/2*mfact, fsize/2*mfact, fsize/2*mfact,-fsize/2*mfact);
|
||||
} else {
|
||||
painter.setPen(ypen);
|
||||
painter.drawEllipse(-fsize/2*mfact, -fsize/2*mfact, fsize*mfact, fsize*mfact);
|
||||
}
|
||||
painter.restore();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RenderArea::mouseReleaseEvent(QMouseEvent *event) {
|
||||
if(event->button()!=Qt::LeftButton)
|
||||
return;
|
||||
|
||||
int fsize = std::min(width()/fx, height()/fy);
|
||||
int myrow = (event->x()-((width()-fsize*fx)/2))/fsize;
|
||||
if(myrow<0||myrow>=fx||event->x()-((width()-fsize*fx)/2)<0)
|
||||
return;
|
||||
|
||||
addStein(myrow);
|
||||
}
|
|
@ -0,0 +1,56 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __RENDERAREA_H
|
||||
#define __RENDERAREA_H
|
||||
|
||||
#include <QWidget>
|
||||
#include <QPen>
|
||||
#include <QMouseEvent>
|
||||
#include "viergewinnt.h"
|
||||
|
||||
class RenderArea : public QWidget {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
RenderArea(QWidget *parent=0);
|
||||
|
||||
void setFeldInfo(int _x, int _y, VierGewinntWidget::Stein **_feld);
|
||||
QSize minimumSizeHint() const;
|
||||
QSize sizeHint() const;
|
||||
|
||||
signals:
|
||||
void addStein(int row);
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event);
|
||||
void mouseReleaseEvent(QMouseEvent *event);
|
||||
|
||||
private:
|
||||
int fx;
|
||||
int fy;
|
||||
float mfact;
|
||||
VierGewinntWidget::Stein **feld;
|
||||
QPen xpen;
|
||||
QPen ypen;
|
||||
};
|
||||
|
||||
#endif
|
|
@ -0,0 +1,84 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "selectmaster.h"
|
||||
|
||||
SelectMasterDialog::SelectMasterDialog(QWidget *parent) : QDialog(parent) {
|
||||
labelhead = new QLabel(tr("Bitte gib einen anderen Masterserver an"));
|
||||
labelmasteraddr = new QLabel(tr("Master-Server:"));
|
||||
labelmasterport = new QLabel(tr("Master-Port:"));
|
||||
editmasteraddr = new QLineEdit;
|
||||
editmasterport = new QLineEdit;
|
||||
okcancel = new QDialogButtonBox(QDialogButtonBox::Ok | QDialogButtonBox::Cancel);
|
||||
|
||||
connect(okcancel, SIGNAL(accepted()), this, SLOT(checkAndAccept()));
|
||||
connect(okcancel, SIGNAL(rejected()), this, SLOT(reject()));
|
||||
|
||||
layout = new QGridLayout;
|
||||
layout->addWidget(labelhead, 0, 0, 1, 2);
|
||||
layout->addWidget(labelmasteraddr, 1, 0);
|
||||
layout->addWidget(editmasteraddr, 1, 1);
|
||||
layout->addWidget(labelmasterport, 2, 0);
|
||||
layout->addWidget(editmasterport, 2, 1);
|
||||
layout->addWidget(okcancel, 3, 0, 1, 2);
|
||||
|
||||
setLayout(layout);
|
||||
setWindowTitle(tr("Master-Server ändern"));
|
||||
setModal(Qt::WindowModal);
|
||||
|
||||
}
|
||||
|
||||
void SelectMasterDialog::checkAndAccept() {
|
||||
if(editmasteraddr->text()=="") {
|
||||
QMessageBox msgbox(this);
|
||||
msgbox.setText(tr("Der Master-Server ist ungültig"));
|
||||
msgbox.exec();
|
||||
return;
|
||||
}
|
||||
|
||||
int tmpport = editmasterport->text().toInt();
|
||||
if(tmpport<1||tmpport>65535) {
|
||||
QMessageBox msgbox(this);
|
||||
msgbox.setText(tr("Der Master-Port ist ungültig"));
|
||||
msgbox.exec();
|
||||
return;
|
||||
}
|
||||
masterserver = editmasteraddr->text();
|
||||
masterport = tmpport;
|
||||
accept();
|
||||
}
|
||||
|
||||
void SelectMasterDialog::setData(QString srv, int port) {
|
||||
masterserver = srv;
|
||||
masterport = port;
|
||||
editmasteraddr->setText(masterserver);
|
||||
std::stringstream str;
|
||||
str << masterport;
|
||||
editmasterport->setText(QString(str.str().c_str()));
|
||||
}
|
||||
|
||||
QString SelectMasterDialog::getMasterServer() {
|
||||
return masterserver;
|
||||
}
|
||||
|
||||
int SelectMasterDialog::getMasterPort() {
|
||||
return masterport;
|
||||
}
|
|
@ -0,0 +1,61 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __SELECTMASTER_H
|
||||
#define __SELECTMASTER_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QString>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QGridLayout>
|
||||
#include <QDialogButtonBox>
|
||||
#include <QMessageBox>
|
||||
#include <sstream>
|
||||
|
||||
class SelectMasterDialog : public QDialog {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
SelectMasterDialog(QWidget *parent=0);
|
||||
void setData(QString srv, int port);
|
||||
|
||||
QString getMasterServer();
|
||||
int getMasterPort();
|
||||
|
||||
private slots:
|
||||
void checkAndAccept();
|
||||
|
||||
private:
|
||||
QString masterserver;
|
||||
int masterport;
|
||||
|
||||
// Guistuff
|
||||
QDialogButtonBox *okcancel;
|
||||
QLineEdit *editmasteraddr;
|
||||
QLineEdit *editmasterport;
|
||||
QLabel *labelmasteraddr;
|
||||
QLabel *labelmasterport;
|
||||
QLabel *labelhead;
|
||||
QGridLayout *layout;
|
||||
};
|
||||
|
||||
#endif
|
Binary file not shown.
|
@ -0,0 +1,341 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!DOCTYPE TS><TS version="1.1" language="en">
|
||||
<defaultcodec>ISO-8859-15</defaultcodec>
|
||||
<context>
|
||||
<name>AboutDialog</name>
|
||||
<message>
|
||||
<location filename="about.cpp" line="26"/>
|
||||
<source>Über</source>
|
||||
<translation>About</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="about.cpp" line="29"/>
|
||||
<source>Ok</source>
|
||||
<translation>Ok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="about.cpp" line="31"/>
|
||||
<source>Netzwerk-VierGewinnt Client
|
||||
Programmiert von seba
|
||||
www.seba-geek.de</source>
|
||||
<translation>Network-VierGewinnt Client
|
||||
Programmed by seba
|
||||
www.seba-geek.de</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="about.cpp" line="33"/>
|
||||
<source>Erstes QT-Programm!
|
||||
Dies ist ein Client für das VierGewinnt-Modul vom "Generic Network-Server". Endlich eine Verbesserung zum SDL-Client...</source>
|
||||
<translation>First QT-Programm!
|
||||
This is a client for the VierGewinnt-Module from the "Generic Network-Server". At last an improvement to the SDL-Client...</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>CreateGameDialog</name>
|
||||
<message>
|
||||
<location filename="creategame.cpp" line="26"/>
|
||||
<source>Neues Spiel</source>
|
||||
<translation>New Game</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="creategame.cpp" line="29"/>
|
||||
<source>Spielname</source>
|
||||
<translation>Gamename</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="creategame.cpp" line="31"/>
|
||||
<source>Ok</source>
|
||||
<translation>Ok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="creategame.cpp" line="33"/>
|
||||
<source>Abbrechen</source>
|
||||
<translation>Cancel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="creategame.cpp" line="55"/>
|
||||
<source>Unbenanntes Spiel</source>
|
||||
<translation>Unknown Game</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>FindServerWidget</name>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="30"/>
|
||||
<source>Sebas Netzwerk-VierGewinnt Client</source>
|
||||
<translation>Sebas Network-VierGewinnt Client</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="30"/>
|
||||
<source>Serverliste</source>
|
||||
<translation>Serverlist</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="52"/>
|
||||
<source>Id</source>
|
||||
<translation>Id</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="52"/>
|
||||
<source>Spielname</source>
|
||||
<translation>Gamename</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="52"/>
|
||||
<source>Spieler</source>
|
||||
<translation>Players</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="52"/>
|
||||
<source>Spielfeld</source>
|
||||
<translation>Field</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="52"/>
|
||||
<source>Gewinnt</source>
|
||||
<translation>Wins</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="60"/>
|
||||
<source>Erneuern</source>
|
||||
<translation>Refresh</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="62"/>
|
||||
<source>Erstellen</source>
|
||||
<translation>Create</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="64"/>
|
||||
<source>Beitreten</source>
|
||||
<translation>Join</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="66"/>
|
||||
<source>Anderer Masterserver</source>
|
||||
<translation>Change masterserver</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="68"/>
|
||||
<source>Über</source>
|
||||
<translation>About</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="85"/>
|
||||
<source>Drücke Erneuern um eine Serverliste zu erhalten</source>
|
||||
<translation>Press Refresh to get the serverlist</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="107"/>
|
||||
<source>Fordere Liste an...</source>
|
||||
<translation>Requesting list...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="133"/>
|
||||
<source>Spiel erstellt</source>
|
||||
<translation>Game created</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="147"/>
|
||||
<source>Es wurde kein Spiel zum beitreten ausgewählt</source>
|
||||
<translation>No Game was selected</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="160"/>
|
||||
<source>Trete Spiel bei..</source>
|
||||
<translation>Joining game..</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="176"/>
|
||||
<source>Version akzeptiert</source>
|
||||
<translation>Version accepted</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="180"/>
|
||||
<source>Version nicht akzeptiert, kein GNS-Server!</source>
|
||||
<translation>Version rejected, not a GNS-Server!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="188"/>
|
||||
<source>Modul ausgewählt</source>
|
||||
<translation>Module selected</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="195"/>
|
||||
<source>VierGewinnt-Modul nicht gefunden!</source>
|
||||
<translation>VierGewinnt-Module not found!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="213"/>
|
||||
<source>Keine Spiele offen :(</source>
|
||||
<translation>No games open :(</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="215"/>
|
||||
<source>Konnte nicht beitreten: Spiel voll</source>
|
||||
<translation>Could not join: Game full</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="217"/>
|
||||
<source>Spiel konnte nicht gefunden werden</source>
|
||||
<translation>Could not find game</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="309"/>
|
||||
<source>Fehler: Der Master-Server Hostname konnte nicht aufgelöst werden!</source>
|
||||
<translation>Error: The masterserver hostname could not be resolved!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="312"/>
|
||||
<source>Fehler: Verbindungsversuch zum Master-Server ist fehlgeschlagen!</source>
|
||||
<translation>Error: Could not connect to masterserver!</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="318"/>
|
||||
<source>Netzwerkfehler: '%1'</source>
|
||||
<translation>Networkerror: '%1'</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="328"/>
|
||||
<source>Die Verbindung zum Masterserver wurde getrennt.</source>
|
||||
<translation>Disconnected from masterserver.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="findserver.cpp" line="339"/>
|
||||
<source>Versuche Verbindung zu </source>
|
||||
<translation>Trying to connect to </translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>NewGameDialog</name>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="28"/>
|
||||
<source>Ein neues Spiel?</source>
|
||||
<translation>A new game?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="30"/>
|
||||
<source>Ok</source>
|
||||
<translation>Ok</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="32"/>
|
||||
<source>Abbrechen</source>
|
||||
<translation>Cancel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="35"/>
|
||||
<source>Neues Spiel?</source>
|
||||
<translation>New game?</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="65"/>
|
||||
<source>Dein Mispieler hat bisher noch nicht zugestimmt.</source>
|
||||
<translation>Your opponent did not agree to a new game right now.</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="68"/>
|
||||
<source>Whee, du hast gewonnen! :)</source>
|
||||
<translation>Whee, you won! :)</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="70"/>
|
||||
<source>Du hast verloren -.-</source>
|
||||
<translation>You have lost -.-</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="newgame.cpp" line="75"/>
|
||||
<source>Dein Mispieler hat zugestimmt.</source>
|
||||
<translation>Your opponent agreed.</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>PlayerWaitDialog</name>
|
||||
<message>
|
||||
<location filename="playerwait.cpp" line="26"/>
|
||||
<source>Abbrechen</source>
|
||||
<translation>Cancel</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="playerwait.cpp" line="29"/>
|
||||
<source>Warte auf anderen Spieler...</source>
|
||||
<translation>Waiting for other player...</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="playerwait.cpp" line="30"/>
|
||||
<source>Auf Spieler warten</source>
|
||||
<translation>Waiting for other player</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>SelectMasterDialog</name>
|
||||
<message>
|
||||
<location filename="selectmaster.cpp" line="25"/>
|
||||
<source>Bitte gib einen anderen Masterserver an</source>
|
||||
<translation>Please enter another masterserver</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="selectmaster.cpp" line="26"/>
|
||||
<source>Master-Server:</source>
|
||||
<translation>Masterserver:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="selectmaster.cpp" line="27"/>
|
||||
<source>Master-Port:</source>
|
||||
<translation>Masterport:</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="selectmaster.cpp" line="44"/>
|
||||
<source>Master-Server ändern</source>
|
||||
<translation>Change masterserver</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="selectmaster.cpp" line="52"/>
|
||||
<source>Der Master-Server ist ungültig</source>
|
||||
<translation>The masterserver is invalid</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="selectmaster.cpp" line="60"/>
|
||||
<source>Der Master-Port ist ungültig</source>
|
||||
<translation>The masterport is invalid</translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>VierGewinntWidget</name>
|
||||
<message>
|
||||
<location filename="viergewinnt.cpp" line="29"/>
|
||||
<source>Sebas Netzwerk-VierGewinnt Client</source>
|
||||
<translation>Sebas Network-VierGewinnt Client</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="viergewinnt.cpp" line="29"/>
|
||||
<source>Spielfenster</source>
|
||||
<translation>Gamewindow</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="viergewinnt.cpp" line="36"/>
|
||||
<source>Spiel ist gestartet</source>
|
||||
<translation>The game has been started</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="viergewinnt.cpp" line="41"/>
|
||||
<source>zu</source>
|
||||
<translation>to</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="viergewinnt.cpp" line="43"/>
|
||||
<source>Spiel Beenden</source>
|
||||
<translation>Quit game</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="viergewinnt.cpp" line="133"/>
|
||||
<source>Du bist am Zug</source>
|
||||
<translation>It's your move</translation>
|
||||
</message>
|
||||
<message>
|
||||
<location filename="viergewinnt.cpp" line="135"/>
|
||||
<source>Dein Mitspieler ist am Zug</source>
|
||||
<translation>It's your opponents move</translation>
|
||||
</message>
|
||||
</context>
|
||||
</TS>
|
|
@ -0,0 +1,33 @@
|
|||
######################################################################
|
||||
# Automatically generated by qmake (2.01a) Sa Nov 1 01:59:30 2008
|
||||
######################################################################
|
||||
|
||||
TEMPLATE = app
|
||||
TARGET =
|
||||
DEPENDPATH += .
|
||||
INCLUDEPATH += .
|
||||
DEFINES += QT_NO_DEBUG_OUTPUT
|
||||
QT += network
|
||||
CONFIG += qt warn_on release
|
||||
|
||||
# Input
|
||||
TRANSLATIONS = viergewinnt-qt_en.ts
|
||||
CODECFORTR = ISO-8859-15
|
||||
|
||||
HEADERS += about.h \
|
||||
creategame.h \
|
||||
findserver.h \
|
||||
newgame.h \
|
||||
playerwait.h \
|
||||
renderarea.h \
|
||||
selectmaster.h \
|
||||
viergewinnt.h
|
||||
SOURCES += about.cpp \
|
||||
creategame.cpp \
|
||||
findserver.cpp \
|
||||
main.cpp \
|
||||
newgame.cpp \
|
||||
playerwait.cpp \
|
||||
renderarea.cpp \
|
||||
selectmaster.cpp \
|
||||
viergewinnt.cpp
|
|
@ -0,0 +1,195 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#include "viergewinnt.h"
|
||||
#include "renderarea.h"
|
||||
|
||||
VierGewinntWidget::VierGewinntWidget(QTcpSocket *tcpsock, QWidget *parent) : QDialog(parent) {
|
||||
setFixedSize(640, 480);
|
||||
setWindowTitle(tr("Sebas Netzwerk-VierGewinnt Client")+" - "+tr("Spielfenster"));
|
||||
feld = 0;
|
||||
mysock = tcpsock;
|
||||
fx = 7;
|
||||
fy = 6;
|
||||
|
||||
// Arrange QT Stuff
|
||||
status = new QLabel(tr("Spiel ist gestartet"));
|
||||
rarea = new RenderArea;
|
||||
connect(rarea, SIGNAL(addStein(int)), this, SLOT(netAdd(int)));
|
||||
|
||||
myscore = new QLCDNumber(2);
|
||||
vs = new QLabel(tr("zu"));
|
||||
youscore = new QLCDNumber(2);
|
||||
exit = new QPushButton(tr("Spiel Beenden"));
|
||||
connect(exit, SIGNAL(clicked()), this, SLOT(closeGame()));
|
||||
|
||||
// layout
|
||||
upperrow = new QHBoxLayout;
|
||||
upperrow->addStretch();
|
||||
upperrow->addWidget(status);
|
||||
upperrow->addStretch();
|
||||
|
||||
underrow = new QHBoxLayout;
|
||||
underrow->addStretch();
|
||||
underrow->addWidget(myscore);
|
||||
underrow->addWidget(vs);
|
||||
underrow->addWidget(youscore);
|
||||
underrow->addStretch();
|
||||
underrow->addWidget(exit);
|
||||
|
||||
layout = new QVBoxLayout;
|
||||
layout->addLayout(upperrow);
|
||||
layout->addWidget(rarea);
|
||||
layout->addLayout(underrow);
|
||||
setLayout(layout);
|
||||
|
||||
waitforplayer = new PlayerWaitDialog(mysock, this);
|
||||
newgame = new NewGameDialog(mysock, this);
|
||||
}
|
||||
|
||||
void VierGewinntWidget::init(int _x, int _y) {
|
||||
qDebug() << "game init(" << _x << ", " << _y << ")\n";
|
||||
dealloc();
|
||||
|
||||
// reset all possible dialogues
|
||||
// setDisabled(false);
|
||||
newgame->hide();
|
||||
waitforplayer->hide();
|
||||
|
||||
fx = _x;
|
||||
fy = _y;
|
||||
feld = new Stein*[fx];
|
||||
for(int i=0; i<fx; i++)
|
||||
feld[i] = new Stein[fy];
|
||||
setScore(0, 0);
|
||||
cleanFeld();
|
||||
rarea->setFeldInfo(fx, fy, feld);
|
||||
}
|
||||
|
||||
void VierGewinntWidget::startGame() {
|
||||
// this->setDisabled(false);
|
||||
// clear all dialogues here
|
||||
qDebug() << "Starting Game";
|
||||
newgame->hide();
|
||||
waitforplayer->hide();
|
||||
|
||||
cleanFeld();
|
||||
QTextStream sockstream(mysock);
|
||||
sockstream << "TURN\n";
|
||||
sockstream << "SHOWSCORE\n";
|
||||
}
|
||||
|
||||
void VierGewinntWidget::add(int row, Stein st) {
|
||||
for(int i=fy-1; i>=0; i--) {
|
||||
qDebug() << "doing " << i << " for row " << row << ", adding " << st;
|
||||
if(feld[row][i]==n) {
|
||||
feld[row][i] = st;
|
||||
rarea->update();
|
||||
setTurn(!myturn);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
void VierGewinntWidget::cleanFeld() {
|
||||
qDebug() << "Cleaning Feld";
|
||||
if(feld==0)
|
||||
return;
|
||||
for(int i=0; i<fx; i++) {
|
||||
for(int j=0; j<fy; j++) {
|
||||
feld[i][j] = n;
|
||||
}
|
||||
}
|
||||
rarea->update();
|
||||
|
||||
while(!pendingadd.empty())
|
||||
pendingadd.pop();
|
||||
}
|
||||
|
||||
void VierGewinntWidget::setTurn(bool _myturn) {
|
||||
myturn = _myturn;
|
||||
if(myturn) {
|
||||
status->setText(tr("Du bist am Zug"));
|
||||
} else {
|
||||
status->setText(tr("Dein Mitspieler ist am Zug"));
|
||||
}
|
||||
}
|
||||
|
||||
void VierGewinntWidget::clientExited() {
|
||||
// pending dialog mit cancel
|
||||
qDebug() << "Wait for player...";
|
||||
newgame->hide();
|
||||
waitforplayer->show();
|
||||
}
|
||||
|
||||
void VierGewinntWidget::ackAdd(bool valid) {
|
||||
if(valid)
|
||||
add(pendingadd.front(), x);
|
||||
pendingadd.pop();
|
||||
}
|
||||
|
||||
void VierGewinntWidget::ackNewGame() {
|
||||
newgame->netPlayerAck();
|
||||
}
|
||||
|
||||
void VierGewinntWidget::newGame(bool won) {
|
||||
if(won) {
|
||||
setScore(myscore->intValue()+1, youscore->intValue());
|
||||
} else {
|
||||
setScore(myscore->intValue(), youscore->intValue()+1);
|
||||
}
|
||||
// this->setDisabled(true);
|
||||
newgame->reset(won);
|
||||
newgame->show();
|
||||
|
||||
// exec, abhfangen
|
||||
}
|
||||
|
||||
void VierGewinntWidget::closeGame() {
|
||||
mysock->close();
|
||||
}
|
||||
|
||||
void VierGewinntWidget::netAdd(int row) {
|
||||
// if(!myturn)
|
||||
// return;
|
||||
pendingadd.push(row);
|
||||
QTextStream sockstream(mysock);
|
||||
sockstream << "ADD " << row << "\n";
|
||||
}
|
||||
|
||||
void VierGewinntWidget::setScore(int a, int b) {
|
||||
myscore->display(a);
|
||||
youscore->display(b);
|
||||
}
|
||||
|
||||
void VierGewinntWidget::dealloc() {
|
||||
if(feld==0)
|
||||
return;
|
||||
for(int i=0; i<x; i++)
|
||||
delete[](feld[i]);
|
||||
delete[](feld);
|
||||
feld = 0;
|
||||
}
|
||||
|
||||
VierGewinntWidget::~VierGewinntWidget() {
|
||||
dealloc();
|
||||
}
|
|
@ -0,0 +1,92 @@
|
|||
/* VierGewinnt - A simple 4-in-a-row network game
|
||||
*
|
||||
* Copyright (c) 2008 by Sebastian Lohff, seba@seba-geek.de
|
||||
* http://www.seba-geek.de
|
||||
*
|
||||
* This file is part of VierGewinnt.
|
||||
*
|
||||
* VierGewinnt is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* VierGewinnt is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with VierGewinnt. If not, see <http://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#ifndef __VIERGEWINNT_H
|
||||
#define __VIERGEWINNT_H
|
||||
|
||||
#include <QDialog>
|
||||
#include <QWidget>
|
||||
#include <QTcpSocket>
|
||||
#include <QPushButton>
|
||||
#include <QLCDNumber>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
#include <QMessageBox>
|
||||
#include <QLabel>
|
||||
#include <QDebug>
|
||||
#include <queue>
|
||||
|
||||
#include "newgame.h"
|
||||
#include "playerwait.h"
|
||||
|
||||
class RenderArea;
|
||||
|
||||
class VierGewinntWidget : public QDialog {
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
VierGewinntWidget(QTcpSocket *tcpsock, QWidget *parent);
|
||||
~VierGewinntWidget();
|
||||
|
||||
enum Stein {n=0, x, o};
|
||||
|
||||
void init(int _x, int _y);
|
||||
void startGame();
|
||||
void add(int row, Stein st);
|
||||
void cleanFeld();
|
||||
void setScore(int a, int b);
|
||||
|
||||
// called by networkstuff
|
||||
void setTurn(bool _myturn);
|
||||
void clientExited();
|
||||
void ackAdd(bool valid);
|
||||
void ackNewGame();
|
||||
void newGame(bool won);
|
||||
|
||||
private slots:
|
||||
void closeGame();
|
||||
void netAdd(int row);
|
||||
|
||||
private:
|
||||
void dealloc();
|
||||
|
||||
int fx, fy;
|
||||
Stein **feld;
|
||||
QTcpSocket *mysock;
|
||||
bool myturn;
|
||||
std::queue<int> pendingadd;
|
||||
|
||||
// guistuff
|
||||
QVBoxLayout *layout;
|
||||
QHBoxLayout *upperrow;
|
||||
QHBoxLayout *underrow;
|
||||
PlayerWaitDialog *waitforplayer;
|
||||
NewGameDialog *newgame;
|
||||
|
||||
QLabel *status;
|
||||
RenderArea *rarea;
|
||||
QLCDNumber *myscore;
|
||||
QLabel *vs;
|
||||
QLCDNumber *youscore;
|
||||
QPushButton *exit;
|
||||
};
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue