Compare commits
No commits in common. "main" and "2ccea97" have entirely different histories.
@ -1,40 +0,0 @@
|
|||||||
name: Build & Publish
|
|
||||||
on: [push]
|
|
||||||
jobs:
|
|
||||||
build:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
steps:
|
|
||||||
- name: Check out the repo
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Docker meta
|
|
||||||
id: meta
|
|
||||||
uses: https://github.com/docker/metadata-action@v4
|
|
||||||
with:
|
|
||||||
images: git.flokaiser.com/dhbw/pmgame
|
|
||||||
tags: |
|
|
||||||
type=sha,enable=true,priority=100,prefix={{branch}}-,suffix=,format=short
|
|
||||||
type=raw,value=latest,enable={{is_default_branch}}
|
|
||||||
|
|
||||||
- name: Get get-docker.sh
|
|
||||||
run: curl -fsSL https://get.docker.com -o get-docker.sh
|
|
||||||
|
|
||||||
- name: Install docker
|
|
||||||
run: sh get-docker.sh
|
|
||||||
|
|
||||||
- name: Login to Registry
|
|
||||||
uses: docker/login-action@v2
|
|
||||||
with:
|
|
||||||
registry: git.flokaiser.com
|
|
||||||
username: ${{ secrets.REGISTRY_USERNAME }}
|
|
||||||
password: ${{ secrets.REGISTRY_TOKEN }}
|
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
|
||||||
uses: docker/setup-buildx-action@v2
|
|
||||||
|
|
||||||
- name: Build and push
|
|
||||||
uses: docker/build-push-action@v4
|
|
||||||
with:
|
|
||||||
platforms: linux/amd64
|
|
||||||
push: true
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
@ -1,10 +0,0 @@
|
|||||||
{
|
|
||||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
|
||||||
"schedule": ["* 5 * * *"],
|
|
||||||
"packageRules": [
|
|
||||||
{
|
|
||||||
"matchUpdateTypes": ["minor", "patch", "pin", "digest"],
|
|
||||||
"automerge": true
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
@ -16,8 +16,8 @@ COPY minimize.sh minimize.sh
|
|||||||
RUN chmod +x minimize.sh
|
RUN chmod +x minimize.sh
|
||||||
RUN ./minimize.sh
|
RUN ./minimize.sh
|
||||||
RUN sed -i "s/DATE_TO_BE_REPLACED/$(date +%s)/" public/index.html
|
RUN sed -i "s/DATE_TO_BE_REPLACED/$(date +%s)/" public/index.html
|
||||||
RUN sed -i "s/COMMIT_TO_BE_REPLACED/GitHub: $(git ls-remote https://git.flokaiser.com/DHBW/Projektmanagement-Game refs/heads/main | awk '{print $1;}' | cut -c1-7)/" public/index.html
|
RUN sed -i "s/COMMIT_TO_BE_REPLACED/GitHub: $(git ls-remote https://github.com/H4CK3R-01/Projektmanagement-Game refs/heads/main | awk '{print $1;}' | cut -c1-7)/" public/index.html
|
||||||
RUN sed -i "s/COMMIT_LINK_TO_BE_REPLACED/https\:\/\/git.flokaiser.com\/DHBW\/Projektmanagement-Game\/commit\/$(git ls-remote https://git.flokaiser.com/DHBW/Projektmanagement-Game refs/heads/main | awk '{print $1;}')/" public/index.html
|
RUN sed -i "s/COMMIT_LINK_TO_BE_REPLACED/https\:\/\/github.com\/H4CK3R-01\/Projektmanagement-Game\/commit\/$(git ls-remote https://github.com/H4CK3R-01/Projektmanagement-Game refs/heads/main | awk '{print $1;}')/" public/index.html
|
||||||
|
|
||||||
EXPOSE 5000
|
EXPOSE 5000
|
||||||
|
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
# Wer wird Projektmanager 2021?
|
# Projektmanagement Game
|
||||||
|
|
||||||
## Docker
|
## Docker
|
||||||
### Build
|
### Build
|
||||||
@ -43,4 +43,4 @@ node Webservice/server.js
|
|||||||
```
|
```
|
||||||
|
|
||||||
### Check if it works
|
### Check if it works
|
||||||
Open `http://127.0.0.1:5000` in your Browser
|
Open `http://127.0.0.1:5000` in your Browser
|
@ -16,6 +16,7 @@ class Game {
|
|||||||
this.currentStatus = Game.STATUS.SETTING_UP;
|
this.currentStatus = Game.STATUS.SETTING_UP;
|
||||||
this.players = [];
|
this.players = [];
|
||||||
this.currentPlayerIndex = 0;
|
this.currentPlayerIndex = 0;
|
||||||
|
this.winnerIndex = 0;
|
||||||
this.round = 0;
|
this.round = 0;
|
||||||
this.hunter = new Hunter();
|
this.hunter = new Hunter();
|
||||||
this.playerNames = [];
|
this.playerNames = [];
|
||||||
@ -89,6 +90,7 @@ class Game {
|
|||||||
let index = this.players.findIndex(player => player.position >= Game.MAX_POSITION);
|
let index = this.players.findIndex(player => player.position >= Game.MAX_POSITION);
|
||||||
if (index !== -1) {
|
if (index !== -1) {
|
||||||
this.currentStatus = Game.STATUS.IS_WON;
|
this.currentStatus = Game.STATUS.IS_WON;
|
||||||
|
this.winnerIndex = index;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -7,7 +7,7 @@ const app = express();
|
|||||||
const server = require('http').createServer(app);
|
const server = require('http').createServer(app);
|
||||||
const {Server} = require("socket.io");
|
const {Server} = require("socket.io");
|
||||||
const io = new Server(server);
|
const io = new Server(server);
|
||||||
let cards = JSON.parse(fs.readFileSync(__dirname + '/../data/fragen_12_07_21_new_format.json'));
|
let cards = JSON.parse(fs.readFileSync(__dirname + '/../data/fragen_10_06_21_final_new_format.json'));
|
||||||
|
|
||||||
let game = {};
|
let game = {};
|
||||||
|
|
||||||
@ -56,7 +56,7 @@ io.on('connection', socket => {
|
|||||||
|
|
||||||
socket.emit('login', game[socket.room].get_player_index(socket.username));
|
socket.emit('login', game[socket.room].get_player_index(socket.username));
|
||||||
socket.join(socket.room);
|
socket.join(socket.room);
|
||||||
io.in(socket.room).emit('update player names', game[socket.room].getPlayerNames());
|
io.in(socket.room).emit('updatePlayerNames', game[socket.room].getPlayerNames());
|
||||||
|
|
||||||
if (game[socket.room].players.length === 1) io.to(socket.id).emit('first player');
|
if (game[socket.room].players.length === 1) io.to(socket.id).emit('first player');
|
||||||
|
|
||||||
@ -87,7 +87,7 @@ io.on('connection', socket => {
|
|||||||
if (game[socket.room].current_player_is(socket.username)) socket.broadcast.to(socket.room).emit('card destroyed');
|
if (game[socket.room].current_player_is(socket.username)) socket.broadcast.to(socket.room).emit('card destroyed');
|
||||||
|
|
||||||
game[socket.room].removePlayerName(socket.username);
|
game[socket.room].removePlayerName(socket.username);
|
||||||
io.in(socket.room).emit('update player names', game[socket.room].getPlayerNames());
|
io.in(socket.room).emit('updatePlayerNames', game[socket.room].getPlayerNames());
|
||||||
|
|
||||||
socket.broadcast.to(socket.room).emit('user left', socket.username);
|
socket.broadcast.to(socket.room).emit('user left', socket.username);
|
||||||
game[socket.room].remove_player(socket.username);
|
game[socket.room].remove_player(socket.username);
|
||||||
@ -150,20 +150,19 @@ io.on('connection', socket => {
|
|||||||
|
|
||||||
game[socket.room].finish_turn();
|
game[socket.room].finish_turn();
|
||||||
|
|
||||||
io.in(socket.room).emit('update hunter', game[socket.room].hunter.getPosition());
|
|
||||||
|
|
||||||
io.in(socket.room).emit('player moved', {
|
io.in(socket.room).emit('player moved', {
|
||||||
"next_player": game[socket.room].players[game[socket.room].currentPlayerIndex].name,
|
"next_player": game[socket.room].players[game[socket.room].currentPlayerIndex].name,
|
||||||
"player": index,
|
"player": index,
|
||||||
"position": position,
|
"position": position,
|
||||||
"state": game[socket.room].currentStatus,
|
"state": game[socket.room].currentStatus,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
io.in(socket.room).emit('update Hunter', game[socket.room].hunter.getPosition());
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
function generate_log_message(room, user, type, message) {
|
function generate_log_message(room, user, type, message) {
|
||||||
let color;
|
let color;
|
||||||
|
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case 'LEFT':
|
case 'LEFT':
|
||||||
color = '\x1b[31m';
|
color = '\x1b[31m';
|
||||||
@ -186,12 +185,12 @@ function generate_log_message(room, user, type, message) {
|
|||||||
default:
|
default:
|
||||||
color = '\x1b[0m';
|
color = '\x1b[0m';
|
||||||
}
|
}
|
||||||
|
|
||||||
room = pad(10, room, ' ').substr(0, 10);
|
room = pad(10, room, ' ').substr(0, 10);
|
||||||
user = pad(10, user, ' ').substr(0, 10);
|
user = pad(10, user, ' ').substr(0, 10);
|
||||||
type = pad(10, type, ' ').substr(0, 10);
|
type = pad(10, type, ' ').substr(0, 10);
|
||||||
|
|
||||||
console.info("%s[%s] [%s] [%s] \x1b[36m%s\x1b[0m", color, room, user, type, message);
|
let reset_color = '\x1b[0m';
|
||||||
|
console.info("%s[%s] [%s] [%s]\x1b[0m %s", color, room, user, type, reset_color, message);
|
||||||
}
|
}
|
||||||
|
|
||||||
function getRandomCard(difficulty, room) {
|
function getRandomCard(difficulty, room) {
|
||||||
|
58
data/main.py
@ -1,19 +1,59 @@
|
|||||||
import json
|
import json
|
||||||
import io
|
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
array = []
|
array = []
|
||||||
with io.open('fragen_12_07_21.json', 'r', encoding='utf-8-sig') as file:
|
with open('fragen_10_06_21_final.json') as file:
|
||||||
|
data = json.load(file)
|
||||||
|
|
||||||
|
length_q = 0
|
||||||
|
id_q = 0
|
||||||
|
length = 0
|
||||||
|
id = 0
|
||||||
|
for i in range(0, len(data)):
|
||||||
|
new = {'id': int(data[i]['id']), 'difficulty': int(data[i]['difficulty']), 'question': data[i]['question'],
|
||||||
|
'answers': []}
|
||||||
|
|
||||||
|
new['answers'].append({"text": data[i]['A'],
|
||||||
|
"status": 'A' == data[i]['key']
|
||||||
|
})
|
||||||
|
new['answers'].append({"text": data[i]['B'],
|
||||||
|
"status": 'B' == data[i]['key']
|
||||||
|
})
|
||||||
|
new['answers'].append({"text": data[i]['C'],
|
||||||
|
"status": 'C' == data[i]['key']
|
||||||
|
})
|
||||||
|
new['answers'].append({"text": data[i]['D'],
|
||||||
|
"status": 'D' == data[i]['key']
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
if(length_q < len(data[i]['question'])):
|
||||||
|
length_q = len(data[i]['question'])
|
||||||
|
|
||||||
|
|
||||||
|
if(length < len(data[i]['A'])):
|
||||||
|
length = len(data[i]['A'])
|
||||||
|
if(length < len(data[i]['B'])):
|
||||||
|
length = len(data[i]['B'])
|
||||||
|
if(length < len(data[i]['C'])):
|
||||||
|
length = len(data[i]['C'])
|
||||||
|
if(length < len(data[i]['D'])):
|
||||||
|
length = len(data[i]['D'])
|
||||||
|
|
||||||
|
array.append(new)
|
||||||
|
|
||||||
|
print("Längste Frage: " + str(length))
|
||||||
|
print("Längste Antwort: " + str(length_q))
|
||||||
|
|
||||||
|
with open('fragen_10_06_21_final.json') as file:
|
||||||
data = json.load(file)
|
data = json.load(file)
|
||||||
|
|
||||||
for i in range(0, len(data)):
|
for i in range(0, len(data)):
|
||||||
new = { 'id': int(data[i]['ID']), 'difficulty': int(data[i]['Schwierigkeit']), 'question': data[i]['Frage'], 'answers': [] }
|
if(length_q == len(data[i]['question'])):
|
||||||
|
print("Längste Frage ID: " + str(data[i]['id']))
|
||||||
|
|
||||||
new['answers'].append({"text": data[i]['A'], "status": 'A' == data[i]['Key']})
|
if(length == len(data[i]['A']) or length == len(data[i]['B']) or length == len(data[i]['C']) or length == len(data[i]['D'])):
|
||||||
new['answers'].append({"text": data[i]['B'], "status": 'B' == data[i]['Key']})
|
print("Längste Antwort ID: " + str(data[i]['id']))
|
||||||
new['answers'].append({"text": data[i]['C'], "status": 'C' == data[i]['Key']})
|
|
||||||
new['answers'].append({"text": data[i]['D'], "status": 'D' == data[i]['Key']})
|
|
||||||
array.append(new)
|
|
||||||
|
|
||||||
with open('fragen_12_07_21_new_format.json', 'w', encoding='utf8') as file:
|
with open('fragen_10_06_21_final_new_format.json', 'w', encoding='utf8') as file:
|
||||||
json.dump(array, file, ensure_ascii=False)
|
json.dump(array, file, ensure_ascii=False)
|
||||||
|
6061
package-lock.json
generated
@ -2,8 +2,8 @@
|
|||||||
"name": "projektmanagement-game",
|
"name": "projektmanagement-game",
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@socket.io/admin-ui": "^0.5.0",
|
"@socket.io/admin-ui": "^0.2.0",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"socket.io": "^4.1.3"
|
"socket.io": "^4.1.2"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
display: flex;
|
display: flex;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
background: url(../img/background.jpg) no-repeat center center fixed;
|
background: url(/img/background.jpg) no-repeat center center fixed;
|
||||||
-webkit-background-size: cover; /* For WebKit*/
|
-webkit-background-size: cover; /* For WebKit*/
|
||||||
-moz-background-size: cover; /* Mozilla*/
|
-moz-background-size: cover; /* Mozilla*/
|
||||||
-o-background-size: cover; /* Opera*/
|
-o-background-size: cover; /* Opera*/
|
||||||
|
@ -48,7 +48,7 @@ header {
|
|||||||
@media only screen and (max-width: 980px) {
|
@media only screen and (max-width: 980px) {
|
||||||
header {
|
header {
|
||||||
height: 5em;
|
height: 5em;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.title {
|
.title {
|
||||||
|
@ -55,20 +55,20 @@
|
|||||||
}
|
}
|
||||||
|
|
||||||
@media only screen and (max-width: 980px) {
|
@media only screen and (max-width: 980px) {
|
||||||
|
|
||||||
#login {
|
#login {
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
}
|
}
|
||||||
|
|
||||||
#login form {
|
|
||||||
padding-top: 10px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#login label {
|
#login label {
|
||||||
font-size: 2.5em;
|
font-size: 2.5em;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#login input, #login button {
|
#login input, #login button {
|
||||||
height: 2.0em;
|
height: 4.0em;
|
||||||
font-size: 2.5em;
|
font-size: 2.5em;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
Before Width: | Height: | Size: 859 KiB After Width: | Height: | Size: 866 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 162 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 161 KiB |
Before Width: | Height: | Size: 49 KiB After Width: | Height: | Size: 164 KiB |
Before Width: | Height: | Size: 131 KiB After Width: | Height: | Size: 411 KiB |
Before Width: | Height: | Size: 314 KiB After Width: | Height: | Size: 443 KiB |
Before Width: | Height: | Size: 306 KiB After Width: | Height: | Size: 435 KiB |
@ -4,19 +4,22 @@
|
|||||||
<meta charset="UTF-8" content="user-scalable=no, autoRotate:disabled" name="viewport"/>
|
<meta charset="UTF-8" content="user-scalable=no, autoRotate:disabled" name="viewport"/>
|
||||||
<title>Wer wird Projektmanager?</title>
|
<title>Wer wird Projektmanager?</title>
|
||||||
|
|
||||||
|
<link href="https://fonts.googleapis.com/css?family=Material+Icons" rel="stylesheet">
|
||||||
|
|
||||||
<link href="css/components.css" rel="stylesheet">
|
<link href="css/components.css" rel="stylesheet">
|
||||||
<link href="css/header.css" rel="stylesheet">
|
<link href="css/header.css" rel="stylesheet">
|
||||||
|
|
||||||
<link href="css/chat.css" rel="stylesheet">
|
<link href="css/chat.css" rel="stylesheet">
|
||||||
<link href="css/game.css" rel="stylesheet">
|
<link href="css/game.css" rel="stylesheet">
|
||||||
|
|
||||||
<link href="css/index.css" rel="stylesheet">
|
<link href="css/index.css" rel="stylesheet">
|
||||||
|
|
||||||
<link href="https://fonts.googleapis.com/css?family=Material+Icons" rel="stylesheet">
|
|
||||||
<link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
|
<link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
|
||||||
</head>
|
</head>
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<div class="spielanleitung"><span
|
<div class="spielanleitung"><span
|
||||||
onclick="open_manual();">Instructions</span></div>
|
onclick="open_manual();">Spielanleitung</span></div>
|
||||||
<div class="title">WWPM</div>
|
<div class="title">WWPM</div>
|
||||||
<div class="build"><span>DATE_TO_BE_REPLACED</span><span><a href="COMMIT_LINK_TO_BE_REPLACED" target="_blank">COMMIT_TO_BE_REPLACED</a></span>
|
<div class="build"><span>DATE_TO_BE_REPLACED</span><span><a href="COMMIT_LINK_TO_BE_REPLACED" target="_blank">COMMIT_TO_BE_REPLACED</a></span>
|
||||||
</div>
|
</div>
|
||||||
@ -26,13 +29,13 @@
|
|||||||
<div id="login">
|
<div id="login">
|
||||||
<form>
|
<form>
|
||||||
<h2 id="error"></h2>
|
<h2 id="error"></h2>
|
||||||
<label for="username">Username: </label>
|
<label for="username">Benutzername: </label>
|
||||||
<input id="username" name="username" placeholder="Username" type="text">
|
<input id="username" name="username" placeholder="Benutzername" type="text">
|
||||||
|
|
||||||
<label for="room">Room name: </label>
|
<label for="room">Raumnummer: </label>
|
||||||
<input id="room" name="room" placeholder="Room name" type="text">
|
<input id="room" name="room" placeholder="Raumnummer" type="text">
|
||||||
|
|
||||||
<button id="ok" type="button">Submit</button>
|
<button id="ok" type="button">Bestätigen</button>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
<div id="game">
|
<div id="game">
|
||||||
@ -53,11 +56,9 @@
|
|||||||
<div id="modal">
|
<div id="modal">
|
||||||
<div id="content">
|
<div id="content">
|
||||||
<div id="modal_header">
|
<div id="modal_header">
|
||||||
<h3 id="modal_title">Instructions</h3>
|
<h3 id="modal_title">Spielanleitung</h3>
|
||||||
<span>
|
<span><i class="material-icon"
|
||||||
<i class="material-icon"
|
onclick="document.getElementById('modal').style.display = 'none';">close</i></span>
|
||||||
onclick="document.getElementById('modal').style.display = 'none';">close</i>
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="divider"></div>
|
<div class="divider"></div>
|
||||||
<div id="manual"></div>
|
<div id="manual"></div>
|
||||||
@ -68,8 +69,9 @@
|
|||||||
|
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.6.1/socket.io.min.js"></script>
|
<script crossorigin="anonymous" referrerpolicy="no-referrer"
|
||||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/6.5.8/browser/pixi.min.js"></script>
|
src="https://cdnjs.cloudflare.com/ajax/libs/socket.io/4.1.2/socket.io.js"></script>
|
||||||
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/pixi.js/6.0.4/browser/pixi.js"></script>
|
||||||
<script src="js/Card.js"></script>
|
<script src="js/Card.js"></script>
|
||||||
<script src="js/Button.js"></script>
|
<script src="js/Button.js"></script>
|
||||||
<script src="js/Sprite.js"></script>
|
<script src="js/Sprite.js"></script>
|
||||||
|
@ -117,7 +117,7 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
|
|||||||
if (this.difficulty === 0) {
|
if (this.difficulty === 0) {
|
||||||
color = 0xF47A93;
|
color = 0xF47A93;
|
||||||
}
|
}
|
||||||
this.buttons.push(new Button(color, 0xcccccc, 0x4169E1, this.card_width - 40, 200, this.card_x + 20, this.card_y + this.card_height - 120 - 220, this.answer_4.text, this.answer_4.status, function () {
|
this.buttons.push(new Button(color, 0xcccccc, 0x4169E1, this.card_width - 40, 200, this.card_x + 20, this.card_y + this.card_height - 120 - 220 * 1, this.answer_4.text, this.answer_4.status, function () {
|
||||||
if (_this.your_turn) {
|
if (_this.your_turn) {
|
||||||
select_answer(3, _this.answer_4.text);
|
select_answer(3, _this.answer_4.text);
|
||||||
}
|
}
|
||||||
@ -135,8 +135,10 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
|
|||||||
this.card.addChild(new Button(0xffffff, 0xcccccc, 0xffffff, this.card_width - 40, 100, this.card_x + 20, this.card_y + this.card_height - 120, "OK", null, function () {
|
this.card.addChild(new Button(0xffffff, 0xcccccc, 0xffffff, this.card_width - 40, 100, this.card_x + 20, this.card_y + this.card_height - 120, "OK", null, function () {
|
||||||
if (answer !== null) {
|
if (answer !== null) {
|
||||||
if (_this.right_answer === answer) { //TODO: do this in backend instead to prevent cheating
|
if (_this.right_answer === answer) { //TODO: do this in backend instead to prevent cheating
|
||||||
|
console.log("Richtig");
|
||||||
socket.emit('card finished', difficulty, true);
|
socket.emit('card finished', difficulty, true);
|
||||||
} else {
|
} else {
|
||||||
|
console.log("Falsch");
|
||||||
socket.emit('card finished', difficulty, false);
|
socket.emit('card finished', difficulty, false);
|
||||||
}
|
}
|
||||||
show_card = false;
|
show_card = false;
|
||||||
@ -145,7 +147,7 @@ function Card(game_board_size, question, answer_1, answer_2, answer_3, answer_4,
|
|||||||
rolled_number = null;
|
rolled_number = null;
|
||||||
} else {
|
} else {
|
||||||
if (your_turn === true) {
|
if (your_turn === true) {
|
||||||
alert("Please choose your answer!");
|
alert("Bitte wähle eine Antwortmöglichkeit aus");
|
||||||
} else {
|
} else {
|
||||||
show_card = false;
|
show_card = false;
|
||||||
answer = null;
|
answer = null;
|
||||||
|
@ -18,4 +18,4 @@ function Sprite(x, y, slow) {
|
|||||||
sprite.width = size * 1.5;
|
sprite.width = size * 1.5;
|
||||||
sprite.height = size * 1.5;
|
sprite.height = size * 1.5;
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,5 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
Images
|
Images
|
||||||
|
background.jpg: https://pixabay.com/get/ge3fe775ba1a5bfd2cc937b0687982214d547e5cf538543560fc25041c070ad5b860d8dd24df751dbc5c7d5ede3f672e7_1920.jpg?attachment=
|
||||||
|
card_stack.png: https://www.google.de/url?sa=i&url=https%3A%2F%2Fwww.pngegg.com%2Fpt%2Fsearch%3Fq%3Drainha%2Bde%2Bcopas&psig=AOvVaw3wwfk87wAXBxqmdXnoGSfe&ust=1623254731054000&source=images&cd=vfe&ved=0CAIQjRxqFwoTCMjUoaG1iPECFQAAAAAdAAAAABA5
|
||||||
dice.svg: https://www.svgrepo.com/download/198836/gambler-casino.svg
|
dice.svg: https://www.svgrepo.com/download/198836/gambler-casino.svg
|
||||||
sprite.jpg: https://media.istockphoto.com/photos/gray-granite-stone-texture-seamless-square-background-tile-ready-picture-id1096464726
|
sprite.jpg: https://media.istockphoto.com/photos/gray-granite-stone-texture-seamless-square-background-tile-ready-picture-id1096464726
|
||||||
*/
|
*/
|
||||||
@ -55,8 +57,8 @@ function start_game() {
|
|||||||
sprites.forEach(sprite => app.stage.addChild(sprite.getSprite()));
|
sprites.forEach(sprite => app.stage.addChild(sprite.getSprite()));
|
||||||
|
|
||||||
// Red border
|
// Red border
|
||||||
let hunter = generate_hunter(new PIXI.Graphics(), 1, 9);
|
let red_border = generate_red_border(new PIXI.Graphics(), 1, 9);
|
||||||
app.stage.addChild(hunter);
|
app.stage.addChild(red_border);
|
||||||
|
|
||||||
|
|
||||||
// Player circles
|
// Player circles
|
||||||
@ -75,17 +77,26 @@ function start_game() {
|
|||||||
|
|
||||||
// Card stacks
|
// Card stacks
|
||||||
let cards_1 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_1.png'), 3, 3, function () {
|
let cards_1 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_1.png'), 3, 3, function () {
|
||||||
if (diced && !show_card && rolled_number === 1) socket.emit('get card', 1);
|
if (diced && !show_card && rolled_number === 1) {
|
||||||
|
console.log("1");
|
||||||
|
socket.emit('get card', 1);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(cards_1);
|
app.stage.addChild(cards_1);
|
||||||
|
|
||||||
let cards_2 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_2.png'), 5, 3, function () {
|
let cards_2 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_2.png'), 5, 3, function () {
|
||||||
if (diced && !show_card && rolled_number === 2) socket.emit('get card', 2);
|
if (diced && !show_card && rolled_number === 2) {
|
||||||
|
console.log("2");
|
||||||
|
socket.emit('get card', 2);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(cards_2);
|
app.stage.addChild(cards_2);
|
||||||
|
|
||||||
let cards_3 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_3.png'), 7, 3, function () {
|
let cards_3 = generate_card_stack(PIXI.Sprite.from('/img/card_stack_3.png'), 7, 3, function () {
|
||||||
if (diced && !show_card && rolled_number === 3) socket.emit('get card', 3);
|
if (diced && !show_card && rolled_number === 3) {
|
||||||
|
console.log("3");
|
||||||
|
socket.emit('get card', 3);
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(cards_3);
|
app.stage.addChild(cards_3);
|
||||||
|
|
||||||
@ -101,7 +112,9 @@ function start_game() {
|
|||||||
dice.buttonMode = true;
|
dice.buttonMode = true;
|
||||||
dice.defaultCursor = 'pointer';
|
dice.defaultCursor = 'pointer';
|
||||||
dice.on('pointerdown', function () {
|
dice.on('pointerdown', function () {
|
||||||
if (!diced) socket.emit('roll dice');
|
if (!diced) {
|
||||||
|
socket.emit('roll dice');
|
||||||
|
}
|
||||||
});
|
});
|
||||||
app.stage.addChild(dice);
|
app.stage.addChild(dice);
|
||||||
|
|
||||||
@ -114,6 +127,7 @@ function start_game() {
|
|||||||
logo.y = sprite_size * 5.5 - sprite_size * 0.2;
|
logo.y = sprite_size * 5.5 - sprite_size * 0.2;
|
||||||
logo.width = sprite_size * 3.5;
|
logo.width = sprite_size * 3.5;
|
||||||
logo.height = sprite_size * 1.5;
|
logo.height = sprite_size * 1.5;
|
||||||
|
// logo.rotation -= Math.PI / 8;
|
||||||
app.stage.addChild(logo);
|
app.stage.addChild(logo);
|
||||||
|
|
||||||
|
|
||||||
@ -160,11 +174,13 @@ function start_game() {
|
|||||||
score_button.defaultCursor = 'pointer';
|
score_button.defaultCursor = 'pointer';
|
||||||
score_button.on('pointerdown', function () {
|
score_button.on('pointerdown', function () {
|
||||||
card = new Card(game_board_size, "",
|
card = new Card(game_board_size, "",
|
||||||
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("N/A"), "status": false},
|
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("N/A"), "status": false},
|
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("N/A"), "status": false},
|
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("N/A"), "status": false},
|
{
|
||||||
0, false);
|
"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("Kein Spieler"),
|
||||||
|
"status": false
|
||||||
|
}, 0, false);
|
||||||
card.showCard();
|
card.showCard();
|
||||||
show_card = true;
|
show_card = true;
|
||||||
});
|
});
|
||||||
@ -172,11 +188,11 @@ function start_game() {
|
|||||||
app.stage.addChild(score_button);
|
app.stage.addChild(score_button);
|
||||||
score_button.addChild(score_button_text);
|
score_button.addChild(score_button_text);
|
||||||
|
|
||||||
|
socket.on('updatePlayerNames', function (p) {
|
||||||
socket.on('update player names', function (p) {
|
|
||||||
playerNames = p;
|
playerNames = p;
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
socket.on('first player', function () {
|
socket.on('first player', function () {
|
||||||
my_turn.text = "Your Turn";
|
my_turn.text = "Your Turn";
|
||||||
});
|
});
|
||||||
@ -192,9 +208,11 @@ function start_game() {
|
|||||||
});
|
});
|
||||||
|
|
||||||
socket.on('card', function (data) {
|
socket.on('card', function (data) {
|
||||||
if (show_card === true) card.destroyCard();
|
let u = data.username;
|
||||||
|
let q = data.card.question;
|
||||||
card = new Card(game_board_size, data.card.question, data.card['answers'][0], data.card['answers'][1], data.card['answers'][2], data.card['answers'][3], data.card['difficulty'], data.username === username);
|
let a = data.card.answers;
|
||||||
|
let d = data.card.difficulty;
|
||||||
|
card = new Card(game_board_size, q, a[0], a[1], a[2], a[3], d, u === username);
|
||||||
card.showCard();
|
card.showCard();
|
||||||
show_card = true;
|
show_card = true;
|
||||||
});
|
});
|
||||||
@ -252,12 +270,12 @@ function start_game() {
|
|||||||
|
|
||||||
if (data.state === 2 || data.state === 3) {
|
if (data.state === 2 || data.state === 3) {
|
||||||
card = new Card(game_board_size, "",
|
card = new Card(game_board_size, "",
|
||||||
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("N/A"), "status": false},
|
{"text": playerNames[0] ? playerNames[0] + ": " + positions[0] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("N/A"), "status": false},
|
{"text": playerNames[1] ? playerNames[1] + ": " + positions[1] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("N/A"), "status": false},
|
{"text": playerNames[2] ? playerNames[2] + ": " + positions[2] : ("Kein Spieler"), "status": false},
|
||||||
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("N/A"), "status": false},
|
{"text": playerNames[3] ? playerNames[3] + ": " + positions[3] : ("Kein Spieler"), "status": false},
|
||||||
0, false, data.state);
|
0, false, data.state);
|
||||||
hunter.clear();
|
red_border.clear();
|
||||||
card.showCard();
|
card.showCard();
|
||||||
show_card = true;
|
show_card = true;
|
||||||
}
|
}
|
||||||
@ -265,12 +283,12 @@ function start_game() {
|
|||||||
if (next_player === username) my_turn.text = "Your Turn";
|
if (next_player === username) my_turn.text = "Your Turn";
|
||||||
});
|
});
|
||||||
|
|
||||||
socket.on('update hunter', function (position) {
|
socket.on('update Hunter', function (position) {
|
||||||
let x = sprites[position].coord_x;
|
let x = sprites[position].coord_x;
|
||||||
let y = sprites[position].coord_y;
|
let y = sprites[position].coord_y;
|
||||||
hunter.clear();
|
red_border.clear();
|
||||||
hunter = generate_hunter(new PIXI.Graphics(), x, y);
|
red_border = generate_red_border(new PIXI.Graphics(), x, y);
|
||||||
app.stage.addChild(hunter);
|
app.stage.addChild(red_border);
|
||||||
});
|
});
|
||||||
|
|
||||||
resize();
|
resize();
|
||||||
@ -288,7 +306,7 @@ function generate_card_stack(sprite, x, y, onclick) {
|
|||||||
return sprite;
|
return sprite;
|
||||||
}
|
}
|
||||||
|
|
||||||
function generate_hunter(graphics, x, y) {
|
function generate_red_border(graphics, x, y) {
|
||||||
graphics.lineStyle(sprite_size * 0.10, 0x862323, 1);
|
graphics.lineStyle(sprite_size * 0.10, 0x862323, 1);
|
||||||
graphics.drawRect(sprite_size * x - sprite_size * 0.2, sprite_size * y - sprite_size * 0.2, sprite_size * 1.5, sprite_size * 1.5);
|
graphics.drawRect(sprite_size * x - sprite_size * 0.2, sprite_size * y - sprite_size * 0.2, sprite_size * 1.5, sprite_size * 1.5);
|
||||||
return graphics;
|
return graphics;
|
||||||
@ -313,7 +331,6 @@ function generate_circle(graphics, x, y, color, offset) {
|
|||||||
graphics.beginFill(0xFFFFFF, 1);
|
graphics.beginFill(0xFFFFFF, 1);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (offset) {
|
switch (offset) {
|
||||||
case 1:
|
case 1:
|
||||||
graphics.drawCircle(sprite_size * x - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
graphics.drawCircle(sprite_size * x - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
||||||
@ -328,7 +345,6 @@ function generate_circle(graphics, x, y, color, offset) {
|
|||||||
graphics.drawCircle(sprite_size * x + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
graphics.drawCircle(sprite_size * x + 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size * y - 65 - sprite_size * 0.2 + sprite_size * 0.75, sprite_size / 4);
|
||||||
break; // lower right
|
break; // lower right
|
||||||
}
|
}
|
||||||
|
|
||||||
graphics.endFill();
|
graphics.endFill();
|
||||||
return graphics;
|
return graphics;
|
||||||
}
|
}
|
||||||
|
@ -2,11 +2,8 @@ let username;
|
|||||||
let room_name;
|
let room_name;
|
||||||
|
|
||||||
window.addEventListener('beforeunload', function (e) {
|
window.addEventListener('beforeunload', function (e) {
|
||||||
e.preventDefault(); // Prevent user from exiting page
|
// Prevent user from exiting page
|
||||||
});
|
e.preventDefault();
|
||||||
|
|
||||||
window.addEventListener('keydown', function (event) {
|
|
||||||
if (event.code === 'Enter' && app == null) document.getElementById('ok').click();
|
|
||||||
});
|
});
|
||||||
|
|
||||||
document.getElementById('ok').addEventListener('click', function () {
|
document.getElementById('ok').addEventListener('click', function () {
|
||||||
|