Bertil Vossebelt

scroll naar beneden

Recente blog posts

hangmanImage

BBB

Een half jaar geleden kregen we een heel vrije opdracht: "Maak met een groep iets met bijvoorbeeld nieuwe technieken die je zou willen leren". Iedereen moest van tevoren opschrijven wat hij of zij graag wilde gaan maken. Aan de hand daarvan werden er groepen gemaakt.

 

Link naar de github pagina: https://github.com/BertilVossebelt/BBB

 

Brainstormen

Helaas kwamen wij in een groep met veel verschillende ideeën. Er was een idee voor een rooster app, een notitie app, een simpele shooter game en een text-based adventure game met bijvoorbeeld python of ruby. Na overleg hebben we besloten om die dingen zoveel mogelijk te combineren, en werd het een text-based adventure game voor op de mobiel gemaakt met Javascript, React-Native en Redux. Vervolgens moesten we natuurlijk gaan brainstormen over wat we dan graag precies wilden gaan maken. Al onze ideeën hebben we geprioriteerd met de MoSCoW methode, omdat we niet wisten hoeveel tijd het zou kosten om alle technieken aan te leren en hoe ingewikkeld het idee was. We hebben meteen in het begin gezegd dat het project voor ons geslaagd is als we tenminste de Must Haves af zouden hebben. 

 

MoSCoW:

Must Have’s:

Inventory, we willen een inventory ,omdat we willen dat een speler meerdere items mee kan nemen.
Items, we willen items, omdat de spelers dan zichzelf kunnen beschermen en kunnen aanvallen tegen tegenstanders.
Shop voor Items, we willen een shop, zodat spelers items kunnen kopen en verkopen met coins,
Map, we willen een Map, omdat we dan een speelveld hebben en de spelers terug kunnen lopen.
Enemy’s, we willen dit, omdat we dan uitdaging geven aan de game.
Equipment system, zodat je niet meerdere wapens tegelijkertijd kan gebruiken.

Should Have’s:
Enemy level system, zodat lage level spelers geen te sterke enemy’s tegen kunnen komen.
Coins, we willen coins, zodat mensen items kunnen kopen uit de shop
Maximum aantal items in de inventory, wij willen dit, omdat dit de game en story line leuker.
Items worden koopbaar vanaf een bepaald level, we willen dit zodat de spelers gemotiveerd blijven om de game te blijven spelen.
Level system, we willen een level system zodat de spelers coins krijgen voor de shop,
Story Line, we willen een story line om de speler door de game te leiden.

Could Have’s:
We willen statistieken zodat, de speler kan bijhouden wat/zei tot nu toe heeft gedaan.
Bootje, zodat het spel interessanter wordt,
Wormhole, om sneller grotere afstanden te overbruggen,
Hunger, we willen dit zodat, de game een extra moeilijkheidsgraad krijgt.

Would have:
Outpost met inventory, zodat de speler meer storage ruimte heeft.

 

Uitwerking

TIjdens de uitvoering van het project hebben we voor het grootste deel van onze tijd besteed aan het leren van de technieken en talen.

Het grootste deel van het eindresultaat is in de laatste paar sprints opgezet. Gelukkig hebben we de Must-haves af gekregen, en zelfs een stukje van de should haves.

Als we nu achterom kijken zijn wij zeer tevreden. Vooral als we eraan denken dat we het halverwege het project eigenlijk niet meer helemaal zagen zitten.

hangmanImage

Admin Panel

Vanaf nu is er op deze website een admin panel beschikbaar voor gebruikers met de rol van admin of hoger. Op deze manier ben ik in staat om artikelen alleen leesbaar te maken voor mensen met een andere hogere rol. Iedereen kan een account aanmaken, maar sommige dingen kunnen alleen bekeken worden door bijvoorbeeld leraren. Je kunt je eigen rol vinden in het rood, onderaan op je profiel pagina.

 

User

Iedere gebruiker krijgt bij registratie automatisch het nummer 1 toegewezen. Dit kan handmatig worden gewijzigd door een admin of door een super admin. Indien een artikel het nummer 2 toegewezen krijgt zal deze gebruiker het artikel dus niet kunnen vinden of lezen.

 

Teacher

Leraren kunnen handmatig een nummer 2 toegewezen krijgen. Het enige voordeel dat dit bied is dat zij met een nummer 2 meer artikels kunnen vinden en lezen.

 

Admin

Een admin kan en mag alles; bijvoorbeeld het schrijven van een nieuw artikel, rollen beheren en gebruikers verwijderen. Tenzij die gebruikers dezelfde of een hogere rol heeft dan hij of zij zelf. 

 

Super Admin

De super admin kan naast alles wat de normale admin kan, maar de super admin is ook in staat om andere admins te verwijderen of om hen een andere rol te geven

hangmanImage

React calculator

Een simpele rekenmachine die gemaakt is in JavaScript, in combinatie met React. Bekijk hier de Rekenmachine

 

Code

import React, {Component} from "react";
import CalculatorButton from './CalculatorButton';
export default class Calculator extends Component { 
state = { currentNumber: '',
total: 0, };

/** * @param number */ 
updateNumber = number => { 
console.log(this.state.currentNumber);
if (number === '=') { 
this.setState({ currentNumber: eval(this.state.currentNumber), }); 
} else if (number === 'clr') { 
this.setState({ currentNumber: '', }); 
} else if (!this.state.currentNumber.includes('*') || this.state.currentNumber.includes('*')) {
this.setState({ currentNumber: this.state.currentNumber.concat(number), }); } 
};
/** * @param number */ 
update = function (
number) { }; 
/** * @return {number} */ 
showCalculationNumber = () => { 
if (this.state.currentNumber) { 
return this.state.currentNumber; } 
return this.state.total; }; 

render() { return (
{this.showCalculationNumber()}) } 
} 
hangmanImage

Morsecode vertaler

Na hangman kregen we deze opdracht. Het doel van de morse code vertaler was dat hij in staat moet zijn om normale letterste vertalen naar morsecode en andersom. Bovendien moet de vertaler de morsecode ook kunnen afspelen. Bekijk hier de [Morsecode vertaler](/morse)

 

Code

<?php 
namespace App\Http\Controllers; 
use Illuminate\Http\Request; 

class morseCode extends Controller { 
function showMorse(Request $request) { 
$showOutput = $this->data($request); 
$output = $this->translateTextToMorse($showOutput['alfabet'], $showOutput['morse'], $showOutput['splittedUserInputText']); 
$textOutput = $this->translateMorseToText($showOutput['alfabet'], $showOutput['morse'], $showOutput['splittedUserInputMorse']); 
$characters = $this->morseToSound($output); 
$morse = $this->translateTextToMorse($showOutput['alfabet'], $showOutput['morse'], $showOutput['splittedUserInputText']); 
$text = $this->translateMorseToText($showOutput['alfabet'], $showOutput['morse'], $showOutput['splittedUserInputText']); 
return view('morse', ['output' => $output, 'textOutput' => $textOutput, 'characters' => $characters, 'morse' => $morse, 'text' => $text]); } 

function data(Request $request) { $alfabet = ['', ' ', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']; 
$morse = [ '', '/', '.-',/*a*/ '-...',/*b*/ '-.-.',/*c*/ '-..',/*d*/ '.',/*e*/ '..-.',/*f*/ '--.',/*g*/ '....', /*h*/ '..',/*i*/ '.---',/*j*/ '-.-',/*k*/ '.-..',/*l*/ '--',/*m*/ '-.'/*n*/, '---',/*o*/ '.--.',/*p*/
 '--.-',/*q*/ '.-.',/*r*/ '...',/*s*/ '-',/*t*/ '..-',/*u*/ '...-',/*v*/ '.--',/*w*/ '-..-',/*x*/ '-.--',/*y*/ '--..'/*z*/]; 

$userInputText = $request->get('text'); $splittedUserInputText = str_split($userInputText); 
$userInputMorse = $request->get('morse'); $splittedUserInputMorse = explode(' ', $userInputMorse); 
return [ 'alfabet' => $alfabet, 'morse' => $morse, 'userInputText' => $userInputText, 'userInputMorse' => 
$userInputMorse, 'splittedUserInputText' => $splittedUserInputText, 'splittedUserInputMorse' => $splittedUserInputMorse ]; }

function translateTextToMorse($alfabet, $morse, $splittedUserInputText) { 
$output = []; foreach ($splittedUserInputText as $letter) { 
$posLetter = array_search($letter, $alfabet); $output[] = $morse[$posLetter].' '; } 
return implode($output); }

function morseToSound($output) { 
$characters = []; $splittedOutput = str_split($output); 
foreach ($splittedOutput as $singleCharacter) { 
$characters[] = $singleCharacter; }
return $characters; } 

function translateMorseToText($alfabet, $morse, $splittedUserInputMorse){ 
$textOutput = [];
foreach ($splittedUserInputMorse as $dashes) { 
$posDash = array_search($dashes, $morse); 
$textOutput[] = $alfabet[$posDash]; } 
return implode($textOutput); } }