.
diff --git a/__pycache__/basegame.cpython-38.pyc b/__pycache__/basegame.cpython-38.pyc
index 5c4c81f..aa02993 100644
Binary files a/__pycache__/basegame.cpython-38.pyc and b/__pycache__/basegame.cpython-38.pyc differ
diff --git a/api.py b/api.py
index d91b9d5..d152e65 100644
--- a/api.py
+++ b/api.py
@@ -1,12 +1,53 @@
+from flask import Flask, redirect, url_for, render_template, session, request, copy_current_request_context, jsonify
+from datetime import timedelta
+import os
+from basegame import *
+
+
import flask
app = flask.Flask(__name__)
app.config["DEBUG"] = True
-
+app.secret_key = "hi"
+playerNameList = []
@app.route('/', methods=['GET'])
def home():
- return "Distant Reading Archive
This site is a prototype API for distant reading of science fiction novels.
"
+ return "Login"
-app.run(host="0.0.0.0", port=5000, debug=True)
+@app.route('/playerlist', methods=['GET'])
+def playerlist():
+ fuckyou = json.dumps(playerNameList)
+ print(fuckyou)
+ return fuckyou
+@app.route("/login", methods=["POST", "GET"])
+def login():
+ if request.method == "POST":
+ session.permanent = True # <--- makes the permanent session
+ user = request.form["nm"]
+ session["name"] = user
+ playerNameList.append(user)
+ return redirect(url_for("playerlist"))
+ else:
+ if "name" in session:
+ return redirect(url_for("playerlist"))
+
+ return render_template("login.html")
+
+@app.route("/user")
+def user():
+ if "user" in session:
+ user = session["user"]
+ return f"{user}
"
+ else:
+ return redirect(url_for("login"))
+
+@app.route("/logout")
+def logout():
+ session.pop("user", None)
+ return redirect(url_for("login"))
+
+
+
+app.run(debug=True, host='0.0.0.0')
diff --git a/client.py b/client.py
new file mode 100644
index 0000000..156493b
--- /dev/null
+++ b/client.py
@@ -0,0 +1,5 @@
+import requests
+
+BASE = "http://192.168.1.99:5000/"
+
+response = requests.post(BASE + "newuser")
\ No newline at end of file
diff --git a/clientgui.py b/clientgui.py
old mode 100644
new mode 100755
diff --git a/flask_session/1c28fefd0f344b6a11f41a6a1042e509 b/flask_session/1c28fefd0f344b6a11f41a6a1042e509
new file mode 100644
index 0000000..c56fb14
Binary files /dev/null and b/flask_session/1c28fefd0f344b6a11f41a6a1042e509 differ
diff --git a/flask_session/2029240f6d1128be89ddc32729463129 b/flask_session/2029240f6d1128be89ddc32729463129
new file mode 100644
index 0000000..a6873e6
Binary files /dev/null and b/flask_session/2029240f6d1128be89ddc32729463129 differ
diff --git a/flask_session/2d9315f3511ca16b791d2ad1f5c75945 b/flask_session/2d9315f3511ca16b791d2ad1f5c75945
new file mode 100644
index 0000000..074e2aa
Binary files /dev/null and b/flask_session/2d9315f3511ca16b791d2ad1f5c75945 differ
diff --git a/flask_session/3a27acfc64a49233bc5f6a8f005ac7f6 b/flask_session/3a27acfc64a49233bc5f6a8f005ac7f6
new file mode 100644
index 0000000..cf1df20
Binary files /dev/null and b/flask_session/3a27acfc64a49233bc5f6a8f005ac7f6 differ
diff --git a/flask_session/3b4eb45b74fa78f6fec90aed91b03872 b/flask_session/3b4eb45b74fa78f6fec90aed91b03872
new file mode 100644
index 0000000..2f6238a
Binary files /dev/null and b/flask_session/3b4eb45b74fa78f6fec90aed91b03872 differ
diff --git a/flask_session/3ced09ffedab87478cafa5b60d469c86 b/flask_session/3ced09ffedab87478cafa5b60d469c86
new file mode 100644
index 0000000..721dc6b
Binary files /dev/null and b/flask_session/3ced09ffedab87478cafa5b60d469c86 differ
diff --git a/flask_session/560a79360111985646644589fb723f8e b/flask_session/560a79360111985646644589fb723f8e
new file mode 100644
index 0000000..c5a3bf6
Binary files /dev/null and b/flask_session/560a79360111985646644589fb723f8e differ
diff --git a/flask_session/5cd9fd3ea6c047384072d5adff3507c4 b/flask_session/5cd9fd3ea6c047384072d5adff3507c4
new file mode 100644
index 0000000..074e2aa
Binary files /dev/null and b/flask_session/5cd9fd3ea6c047384072d5adff3507c4 differ
diff --git a/flask_session/5ce19fde792aa16684f705e201e66b89 b/flask_session/5ce19fde792aa16684f705e201e66b89
new file mode 100644
index 0000000..074e2aa
Binary files /dev/null and b/flask_session/5ce19fde792aa16684f705e201e66b89 differ
diff --git a/flask_session/6cb847002f230840f18ad9f94cf1f4cf b/flask_session/6cb847002f230840f18ad9f94cf1f4cf
new file mode 100644
index 0000000..074e2aa
Binary files /dev/null and b/flask_session/6cb847002f230840f18ad9f94cf1f4cf differ
diff --git a/flask_session/7b372cc01a74f9306c91e3cf2dc4b3cf b/flask_session/7b372cc01a74f9306c91e3cf2dc4b3cf
new file mode 100644
index 0000000..31bc4a5
Binary files /dev/null and b/flask_session/7b372cc01a74f9306c91e3cf2dc4b3cf differ
diff --git a/flask_session/7c282cf99bc65c3f05c91c611f170179 b/flask_session/7c282cf99bc65c3f05c91c611f170179
new file mode 100644
index 0000000..074e2aa
Binary files /dev/null and b/flask_session/7c282cf99bc65c3f05c91c611f170179 differ
diff --git a/flask_session/82b450fa38180dad6a3c0a9ef71e9b71 b/flask_session/82b450fa38180dad6a3c0a9ef71e9b71
new file mode 100644
index 0000000..dda4a5b
Binary files /dev/null and b/flask_session/82b450fa38180dad6a3c0a9ef71e9b71 differ
diff --git a/flask_session/9bd9f3850933ae0d03d980c0e6077ac3 b/flask_session/9bd9f3850933ae0d03d980c0e6077ac3
new file mode 100644
index 0000000..25b62a8
Binary files /dev/null and b/flask_session/9bd9f3850933ae0d03d980c0e6077ac3 differ
diff --git a/flask_session/9e1fde7ed764383b064adfbf1d2ca90d b/flask_session/9e1fde7ed764383b064adfbf1d2ca90d
new file mode 100644
index 0000000..0b3eb8e
Binary files /dev/null and b/flask_session/9e1fde7ed764383b064adfbf1d2ca90d differ
diff --git a/flask_session/b33d8e1df0e472bf7c935778decd9394 b/flask_session/b33d8e1df0e472bf7c935778decd9394
new file mode 100644
index 0000000..fe45927
Binary files /dev/null and b/flask_session/b33d8e1df0e472bf7c935778decd9394 differ
diff --git a/flask_session/b70666f07507c1d5e3cc33311426ba5f b/flask_session/b70666f07507c1d5e3cc33311426ba5f
new file mode 100644
index 0000000..2f6238a
Binary files /dev/null and b/flask_session/b70666f07507c1d5e3cc33311426ba5f differ
diff --git a/flask_session/ba88a8ea3c32ba431aa98b4f78573cdc b/flask_session/ba88a8ea3c32ba431aa98b4f78573cdc
new file mode 100644
index 0000000..074e2aa
Binary files /dev/null and b/flask_session/ba88a8ea3c32ba431aa98b4f78573cdc differ
diff --git a/flask_session/c2358fc6de6dc0731ce6625ce8422d2f b/flask_session/c2358fc6de6dc0731ce6625ce8422d2f
new file mode 100644
index 0000000..732a63a
Binary files /dev/null and b/flask_session/c2358fc6de6dc0731ce6625ce8422d2f differ
diff --git a/flask_session/ca503d0118d856ec932a988e43235f12 b/flask_session/ca503d0118d856ec932a988e43235f12
new file mode 100644
index 0000000..25b62a8
Binary files /dev/null and b/flask_session/ca503d0118d856ec932a988e43235f12 differ
diff --git a/flask_session/cb7201b42d639e05e656a30e000ff97c b/flask_session/cb7201b42d639e05e656a30e000ff97c
new file mode 100644
index 0000000..679761f
Binary files /dev/null and b/flask_session/cb7201b42d639e05e656a30e000ff97c differ
diff --git a/flask_session/ceceb71ed79241030814d12cc36065ce b/flask_session/ceceb71ed79241030814d12cc36065ce
new file mode 100644
index 0000000..e996a3d
Binary files /dev/null and b/flask_session/ceceb71ed79241030814d12cc36065ce differ
diff --git a/flask_session/e583d2f475e2ee906868277d18c9b89a b/flask_session/e583d2f475e2ee906868277d18c9b89a
new file mode 100644
index 0000000..85ef14f
Binary files /dev/null and b/flask_session/e583d2f475e2ee906868277d18c9b89a differ
diff --git a/flask_session/e5bf78e82df2c5a8fddfa67d95ec9e3f b/flask_session/e5bf78e82df2c5a8fddfa67d95ec9e3f
new file mode 100644
index 0000000..83e69bd
Binary files /dev/null and b/flask_session/e5bf78e82df2c5a8fddfa67d95ec9e3f differ
diff --git a/flask_session/f4b23f64b0d47061347e35cc2f47203d b/flask_session/f4b23f64b0d47061347e35cc2f47203d
new file mode 100644
index 0000000..553185d
Binary files /dev/null and b/flask_session/f4b23f64b0d47061347e35cc2f47203d differ
diff --git a/flask_session/f8b29786bf3678b1ff32ea987c529a1d b/flask_session/f8b29786bf3678b1ff32ea987c529a1d
new file mode 100644
index 0000000..cf1df20
Binary files /dev/null and b/flask_session/f8b29786bf3678b1ff32ea987c529a1d differ
diff --git a/python3-vckonline/include/site/python3.8/greenlet/greenlet.h b/python3-vckonline/include/site/python3.8/greenlet/greenlet.h
new file mode 100644
index 0000000..d68160b
--- /dev/null
+++ b/python3-vckonline/include/site/python3.8/greenlet/greenlet.h
@@ -0,0 +1,168 @@
+/* vim:set noet ts=8 sw=8 : */
+
+/* Greenlet object interface */
+
+#ifndef Py_GREENLETOBJECT_H
+#define Py_GREENLETOBJECT_H
+
+#include
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#define GREENLET_VERSION "0.4.17"
+
+#if PY_VERSION_HEX >= 0x030700A3
+# define GREENLET_USE_EXC_INFO
+#endif
+
+#ifndef GREENLET_USE_CONTEXT_VARS
+#ifdef Py_CONTEXT_H
+#define GREENLET_USE_CONTEXT_VARS 1
+#else
+#define GREENLET_USE_CONTEXT_VARS 0
+#endif
+#endif
+
+typedef struct _greenlet {
+ PyObject_HEAD
+ char* stack_start;
+ char* stack_stop;
+ char* stack_copy;
+ intptr_t stack_saved;
+ struct _greenlet* stack_prev;
+ struct _greenlet* parent;
+ PyObject* run_info;
+ struct _frame* top_frame;
+ int recursion_depth;
+ PyObject* weakreflist;
+#ifdef GREENLET_USE_EXC_INFO
+ _PyErr_StackItem* exc_info;
+ _PyErr_StackItem exc_state;
+#else
+ PyObject* exc_type;
+ PyObject* exc_value;
+ PyObject* exc_traceback;
+#endif
+ PyObject* dict;
+#if GREENLET_USE_CONTEXT_VARS
+ PyObject* context;
+#endif
+} PyGreenlet;
+
+#define PyGreenlet_Check(op) PyObject_TypeCheck(op, &PyGreenlet_Type)
+#define PyGreenlet_MAIN(op) (((PyGreenlet*)(op))->stack_stop == (char*) -1)
+#define PyGreenlet_STARTED(op) (((PyGreenlet*)(op))->stack_stop != NULL)
+#define PyGreenlet_ACTIVE(op) (((PyGreenlet*)(op))->stack_start != NULL)
+#define PyGreenlet_GET_PARENT(op) (((PyGreenlet*)(op))->parent)
+
+#if (PY_MAJOR_VERSION == 2 && PY_MINOR_VERSION >= 7) || (PY_MAJOR_VERSION == 3 && PY_MINOR_VERSION >= 1) || PY_MAJOR_VERSION > 3
+#define GREENLET_USE_PYCAPSULE
+#endif
+
+/* C API functions */
+
+/* Total number of symbols that are exported */
+#define PyGreenlet_API_pointers 8
+
+#define PyGreenlet_Type_NUM 0
+#define PyExc_GreenletError_NUM 1
+#define PyExc_GreenletExit_NUM 2
+
+#define PyGreenlet_New_NUM 3
+#define PyGreenlet_GetCurrent_NUM 4
+#define PyGreenlet_Throw_NUM 5
+#define PyGreenlet_Switch_NUM 6
+#define PyGreenlet_SetParent_NUM 7
+
+#ifndef GREENLET_MODULE
+/* This section is used by modules that uses the greenlet C API */
+static void **_PyGreenlet_API = NULL;
+
+#define PyGreenlet_Type (*(PyTypeObject *) _PyGreenlet_API[PyGreenlet_Type_NUM])
+
+#define PyExc_GreenletError \
+ ((PyObject *) _PyGreenlet_API[PyExc_GreenletError_NUM])
+
+#define PyExc_GreenletExit \
+ ((PyObject *) _PyGreenlet_API[PyExc_GreenletExit_NUM])
+
+/*
+ * PyGreenlet_New(PyObject *args)
+ *
+ * greenlet.greenlet(run, parent=None)
+ */
+#define PyGreenlet_New \
+ (* (PyGreenlet * (*)(PyObject *run, PyGreenlet *parent)) \
+ _PyGreenlet_API[PyGreenlet_New_NUM])
+
+/*
+ * PyGreenlet_GetCurrent(void)
+ *
+ * greenlet.getcurrent()
+ */
+#define PyGreenlet_GetCurrent \
+ (* (PyGreenlet * (*)(void)) _PyGreenlet_API[PyGreenlet_GetCurrent_NUM])
+
+/*
+ * PyGreenlet_Throw(
+ * PyGreenlet *greenlet,
+ * PyObject *typ,
+ * PyObject *val,
+ * PyObject *tb)
+ *
+ * g.throw(...)
+ */
+#define PyGreenlet_Throw \
+ (* (PyObject * (*) \
+ (PyGreenlet *self, PyObject *typ, PyObject *val, PyObject *tb)) \
+ _PyGreenlet_API[PyGreenlet_Throw_NUM])
+
+/*
+ * PyGreenlet_Switch(PyGreenlet *greenlet, PyObject *args)
+ *
+ * g.switch(*args, **kwargs)
+ */
+#define PyGreenlet_Switch \
+ (* (PyObject * (*)(PyGreenlet *greenlet, PyObject *args, PyObject *kwargs)) \
+ _PyGreenlet_API[PyGreenlet_Switch_NUM])
+
+/*
+ * PyGreenlet_SetParent(PyObject *greenlet, PyObject *new_parent)
+ *
+ * g.parent = new_parent
+ */
+#define PyGreenlet_SetParent \
+ (* (int (*)(PyGreenlet *greenlet, PyGreenlet *nparent)) \
+ _PyGreenlet_API[PyGreenlet_SetParent_NUM])
+
+/* Macro that imports greenlet and initializes C API */
+#ifdef GREENLET_USE_PYCAPSULE
+#define PyGreenlet_Import() \
+{ \
+ _PyGreenlet_API = (void**)PyCapsule_Import("greenlet._C_API", 0); \
+}
+#else
+#define PyGreenlet_Import() \
+{ \
+ PyObject *module = PyImport_ImportModule("greenlet"); \
+ if (module != NULL) { \
+ PyObject *c_api_object = PyObject_GetAttrString( \
+ module, "_C_API"); \
+ if (c_api_object != NULL && PyCObject_Check(c_api_object)) { \
+ _PyGreenlet_API = \
+ (void **) PyCObject_AsVoidPtr(c_api_object); \
+ Py_DECREF(c_api_object); \
+ } \
+ Py_DECREF(module); \
+ } \
+}
+#endif
+
+#endif /* GREENLET_MODULE */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* !Py_GREENLETOBJECT_H */
diff --git a/templates/base.html b/templates/base.html
new file mode 100644
index 0000000..c2e35b3
--- /dev/null
+++ b/templates/base.html
@@ -0,0 +1,33 @@
+
+
+
+
+ {% block title %}{% endblock %}
+
+
+
+ {% block content %}
+ {% endblock %}
+
+
+
+
+
\ No newline at end of file
diff --git a/templates/index.html b/templates/index.html
new file mode 100644
index 0000000..bd690c0
--- /dev/null
+++ b/templates/index.html
@@ -0,0 +1,5 @@
+{% extends "base.html" %}
+{% block title %}Home Page{% endblock %}
+{% block content %}
+Home Page
+{% endblock %}
\ No newline at end of file
diff --git a/templates/login.html b/templates/login.html
new file mode 100644
index 0000000..8ed92ad
--- /dev/null
+++ b/templates/login.html
@@ -0,0 +1,10 @@
+{% extends "base.html" %}
+{% block title %}Login Page{% endblock %}
+
+{% block content %}
+
+{% endblock %}
\ No newline at end of file
diff --git a/vckonline.py b/vckonline.py
index 4b92278..cf68db1 100644
--- a/vckonline.py
+++ b/vckonline.py
@@ -1,6 +1,18 @@
from basegame import *
print("Welcome to Valeria Card Kingdoms: Online")
-gameBoard = Board(5, "shuffled")
-while not gameBoard.end_check():
- gameBoard.play_turn()
+playerCount = 2 #int(input("How many players? (2-5):\n"))
+citizenSet = "shuffled" #input("What set do you want to play? (base1, base2, shadowvale, flamesandfrost, crimsonseas, shuffled):\n")
+#gameBoard = Board(playerCount, citizenSet)
+gameBoard = Board(playerCount, citizenSet)
+#have players select dukes
+for player in gameBoard.playerList:
+ player.display()
+ for duke in player.ownedDukes:
+ duke.display()
+ dukeChoice = 2#int(input("Enter Duke number:\n"))
+ player.duke = player.ownedDukes[dukeChoice - 1]
+ #player.duke.display()
+#gameBoard.display()
+#while not gameBoard.end_check():
+gameBoard.play_turn()
diff --git a/vckoserver.py b/vckoserver.py
old mode 100644
new mode 100755
index 23a30d3..dfb03f4
--- a/vckoserver.py
+++ b/vckoserver.py
@@ -1,31 +1,35 @@
import socket
+import time
+import threading
-
-def server_program():
- # get the hostname
- host = socket.gethostname()
- port = 5000 # initiate port no above 1024
-
- server_socket = socket.socket() # get instance
- # look closely. The bind() function takes tuple as argument
- server_socket.bind((host, port)) # bind host address and port together
-
- # configure how many client the server can listen simultaneously
- server_socket.listen(5)
- conn, address = server_socket.accept() # accept new connection
- while True:
+class ServerVCKO:
+ def __init__(self):
+ self.host = socket.gethostname()
+ self.port = 5000
+ self.server_socket = socket.socket()
+ self.server_socket.bind((host, port))
+ self.header_size = 1024
+ self.format = "utf-8"
+
+ def handle_client(conn, addr):
print("Connection from: " + str(address))
+ connected = True
+ while connected:
+ msg_length = conn.recv(self.header_size).decode(self.format)
+ msg_length = int(msg_length)
+ msg = conn.recv(msg_length).decode(self.format)
+ print(f"[{addr
+
+ def start(self):
+ self.server.listen()
while True:
- # receive data stream. it won't accept data packet greater than 1024 bytes
- data = conn.recv(1024).decode()
- if not data:
- # if data is not received break
- break
- print("from connected user: " + str(data))
- data = f"you sent: {str(data)}"
- conn.send(data.encode()) # send data to the client
- conn.close() # close the connection
-
-
+ conn, address = server_socket.accept()
+ thread = threading.Thread(target = handle_client, args = (conn, addr))
+ thread.start
+ print(f"Active threads: {threading.activeCount() - 1}")
+
if __name__ == '__main__':
- server_program()
+ print("server starting")
+ server = ServerVCKO()
+ server.start()
+