2021-06-06 19:24:15 +00:00
let answer = null ;
2021-05-31 19:42:33 +00:00
function Sprite ( x , y ) {
2021-06-01 11:24:52 +00:00
this . sprite = PIXI . Sprite . from ( '/img/sprite.jpg' ) ;
this . coord _x = x ;
this . coord _y = y ;
this . getSprite = function ( ) {
this . setSize ( this . sprite , sprite _size ) ;
return this . sprite ;
}
this . resize = function ( sprite _size ) {
this . setSize ( this . sprite , sprite _size ) ;
}
this . setSize = function ( sprite , size ) {
sprite . x = this . coord _x * size - size * 0.2 ;
sprite . y = this . coord _y * size - size * 0.2 ;
sprite . width = size * 1.5 ;
sprite . height = size * 1.5 ;
}
2021-05-31 19:42:33 +00:00
}
2021-05-26 17:34:31 +00:00
2021-06-01 11:24:52 +00:00
2021-06-05 15:46:31 +00:00
let game = document . getElementById ( 'game' ) ;
let game _board _size = calculate _size ( ) ;
let sprite _size = Math . floor ( game _board _size / 11 ) ;
const app = new PIXI . Application ( {
autoResize : true ,
resolution : devicePixelRatio ,
backgroundAlpha : 0 ,
width : game _board _size ,
height : game _board _size
} ) ;
document . getElementById ( 'game' ) . appendChild ( app . view ) ;
// fields
2021-05-31 19:42:33 +00:00
let sprites = {
2021-06-01 11:24:52 +00:00
0 : new Sprite ( 1 , 1 ) ,
1 : new Sprite ( 3 , 1 ) ,
2 : new Sprite ( 5 , 1 ) ,
3 : new Sprite ( 7 , 1 ) ,
4 : new Sprite ( 9 , 1 ) ,
5 : new Sprite ( 1 , 3 ) ,
6 : new Sprite ( 9 , 3 ) ,
7 : new Sprite ( 1 , 5 ) ,
8 : new Sprite ( 9 , 5 ) ,
9 : new Sprite ( 1 , 7 ) ,
10 : new Sprite ( 9 , 7 ) ,
11 : new Sprite ( 1 , 9 ) ,
12 : new Sprite ( 3 , 9 ) ,
13 : new Sprite ( 5 , 9 ) ,
14 : new Sprite ( 7 , 9 ) ,
15 : new Sprite ( 9 , 9 ) ,
2021-05-31 19:42:33 +00:00
}
2021-05-26 17:34:31 +00:00
2021-06-05 15:46:31 +00:00
for ( let i = 0 ; i < 16 ; i ++ ) app . stage . addChild ( sprites [ i ] . getSprite ( ) ) ;
2021-05-26 17:34:31 +00:00
2021-06-05 15:46:31 +00:00
// Red border
let red _border = generate _red _border ( new PIXI . Graphics ( ) ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( red _border ) ;
2021-06-05 15:46:31 +00:00
// White circles
let first _circle = generate _circle ( new PIXI . Graphics ( ) , 3 , 9 ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( first _circle ) ;
2021-06-05 15:46:31 +00:00
let second _circle = generate _circle ( new PIXI . Graphics ( ) , 5 , 9 ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( second _circle ) ;
2021-06-05 15:46:31 +00:00
let third _circle = generate _circle ( new PIXI . Graphics ( ) , 7 , 9 ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( third _circle ) ;
2021-05-31 19:42:33 +00:00
2021-06-05 15:46:31 +00:00
// Card stacks
let cards _1 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 3 , 3 , function ( ) {
console . log ( "1" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _1 ) ;
let cards _2 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 5 , 3 , function ( ) {
console . log ( "2" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _2 ) ;
let cards _3 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 7 , 3 , function ( ) {
console . log ( "3" ) ;
2021-06-06 19:24:15 +00:00
generate _card ( "Ein Bäcker möchte eine neue Filiale eröffnen. Wie sollte er das Budget einteilen?" , "a1" , "a2" , "a3" , "a4" , 1 , 1 ) ;
2021-06-05 15:46:31 +00:00
} ) ;
app . stage . addChild ( cards _3 ) ;
2021-05-31 19:42:33 +00:00
2021-06-05 15:46:31 +00:00
function generate _card _stack ( sprite , x , y , onclick ) {
sprite . x = sprite _size * x - sprite _size * 0.2 ;
sprite . y = sprite _size * y - sprite _size * 0.2 ;
sprite . width = sprite _size * 1.5 ;
sprite . height = sprite _size * 3 * 0.72 ;
sprite . interactive = true ;
sprite . on ( 'click' , onclick ) ;
return sprite
}
function generate _red _border ( graphics ) {
graphics . lineStyle ( sprite _size * 0.10 , 0x862323 , 1 ) ;
graphics . drawRect ( sprite _size * 9 - sprite _size * 0.2 , sprite _size * 9 - sprite _size * 0.2 , sprite _size * 1.5 , sprite _size * 1.5 ) ;
return graphics ;
}
function generate _circle ( graphics , x , y ) {
graphics . lineStyle ( 0 ) ;
graphics . beginFill ( 0xffffff , 1 ) ;
graphics . drawCircle ( sprite _size * x - sprite _size * 0.2 + sprite _size * 0.75 , sprite _size * y - sprite _size * 0.2 + sprite _size * 0.75 , sprite _size / 4 ) ;
graphics . endFill ( ) ;
return graphics ;
}
2021-06-06 19:24:15 +00:00
function generate _card ( s , a1 , a2 , a3 , a4 , right _a , d ) {
const style = new PIXI . TextStyle ( {
fontFamily : 'Arial' ,
fontSize : 20 ,
wordWrap : true ,
wordWrapWidth : game _board _size * 0.5 - 20 ,
} ) ;
const header _style = new PIXI . TextStyle ( {
fontFamily : 'Arial' ,
fontSize : 25 ,
wordWrap : true ,
wordWrapWidth : game _board _size * 0.5 - 20 ,
} ) ;
2021-06-01 11:24:52 +00:00
const card = new PIXI . Graphics ( ) ;
2021-06-05 15:46:31 +00:00
let start _x = game _board _size * 0.25 + 2.5 ;
let start _y = game _board _size / 2 - game _board _size * 0.72 / 2 + 2.5 ;
2021-06-01 11:24:52 +00:00
card . lineStyle ( 5 , 0x000000 , 1 ) ;
2021-06-05 15:46:31 +00:00
card . beginFill ( 0xffffff ) ;
card . drawRoundedRect ( start _x , start _y , game _board _size * 0.5 , game _board _size * 0.72 , 10 ) ;
2021-06-01 11:24:52 +00:00
card . endFill ( ) ;
2021-05-31 19:42:33 +00:00
2021-06-06 19:24:15 +00:00
const header = new PIXI . Text ( "Schwierigkeit " + d , header _style ) ;
header . x = start _x + 10 + card . width / 2 - header . width / 2 - 2.5 - 10 ;
header . y = start _y + 10 ;
card . addChild ( header ) ;
2021-05-31 19:42:33 +00:00
const basicText = new PIXI . Text ( s , style ) ;
basicText . x = start _x + 10 ;
2021-06-06 19:24:15 +00:00
basicText . y = start _y + 20 + header . height ;
2021-06-01 11:24:52 +00:00
card . addChild ( basicText ) ;
2021-06-05 15:46:31 +00:00
2021-06-06 19:24:15 +00:00
// TODO Random answer order
let answer _1 = generate _answer _button ( new PIXI . Graphics ( ) , 1 , start _x , start _y , function ( ) {
select _answer ( answer _1 , answer _2 , answer _3 , answer _4 , start _x , start _y , 1 ) ;
} ) ;
let answer _1 _text = generate _answer _text ( new PIXI . Text ( a1 , style ) , answer _1 , start _x , start _y ) ;
card . addChild ( answer _1 ) ;
card . addChild ( answer _1 _text ) ;
let answer _2 = generate _answer _button ( new PIXI . Graphics ( ) , 2 , start _x , start _y , function ( ) {
select _answer ( answer _1 , answer _2 , answer _3 , answer _4 , start _x , start _y , 2 ) ;
} ) ;
let answer _2 _text = generate _answer _text ( new PIXI . Text ( a2 , style ) , answer _2 , start _x , start _y ) ;
card . addChild ( answer _2 ) ;
card . addChild ( answer _2 _text ) ;
let answer _3 = generate _answer _button ( new PIXI . Graphics ( ) , 3 , start _x , start _y , function ( ) {
select _answer ( answer _1 , answer _2 , answer _3 , answer _4 , start _x , start _y , 3 ) ;
} ) ;
let answer _3 _text = generate _answer _text ( new PIXI . Text ( a3 , style ) , answer _3 , start _x , start _y ) ;
card . addChild ( answer _3 ) ;
card . addChild ( answer _3 _text ) ;
let answer _4 = generate _answer _button ( new PIXI . Graphics ( ) , 4 , start _x , start _y , function ( ) {
select _answer ( answer _1 , answer _2 , answer _3 , answer _4 , start _x , start _y , 4 ) ;
} ) ;
let answer _4 _text = generate _answer _text ( new PIXI . Text ( "a4" , style ) , answer _4 , start _x , start _y ) ;
card . addChild ( answer _4 ) ;
card . addChild ( answer _4 _text ) ;
2021-06-05 15:46:31 +00:00
// OK-Button
const ok = new PIXI . Graphics ( ) ;
ok . lineStyle ( 2 , 0x000000 , 1 ) ;
ok . beginFill ( 0xffffff ) ;
ok . drawRect ( start _x , start _y , game _board _size * 0.5 - 20 , 50 ) ;
ok . endFill ( ) ;
ok . x = 10 ;
ok . y = game _board _size * 0.72 - 60 ;
card . addChild ( ok ) ;
const ok _text = new PIXI . Text ( 'OK' , style ) ;
ok _text . x = start _x + ok . x + ok . width / 2 - ok _text . width / 2 ;
ok _text . y = start _y + ok . y + ok . height / 2 - ok _text . height / 2 ;
card . addChild ( ok _text ) ;
ok . interactive = true ;
ok . on ( 'click' , function ( ) {
2021-06-06 19:24:15 +00:00
if ( right _a === answer ) {
console . log ( "Richtig" )
} else {
console . log ( "Falsch" )
}
card . destroy ( ) ;
2021-06-05 15:46:31 +00:00
} ) ;
2021-06-01 11:24:52 +00:00
app . stage . addChild ( card ) ;
}
2021-06-05 15:46:31 +00:00
2021-06-06 19:24:15 +00:00
function select _answer ( answer _1 , answer _2 , answer _3 , answer _4 , start _x , start _y , id ) {
if ( answer === null ) {
answer = id ;
switch ( answer ) {
case 1 :
draw _rect ( answer _1 , 0xff00ff , start _x , start _y ) ;
break ;
case 2 :
draw _rect ( answer _2 , 0xff00ff , start _x , start _y ) ;
break ;
case 3 :
draw _rect ( answer _3 , 0xff00ff , start _x , start _y ) ;
break ;
case 4 :
draw _rect ( answer _4 , 0xff00ff , start _x , start _y ) ;
break ;
}
} else {
draw _rect ( answer _1 , 0xffffff , start _x , start _y ) ;
draw _rect ( answer _2 , 0xffffff , start _x , start _y ) ;
draw _rect ( answer _3 , 0xffffff , start _x , start _y ) ;
draw _rect ( answer _4 , 0xffffff , start _x , start _y ) ;
answer = null ;
select _answer ( answer _1 , answer _2 , answer _3 , answer _4 , start _x , start _y , id ) ;
}
}
function draw _rect ( answer , color , start _x , start _y ) {
answer . clear ( ) ;
answer . lineStyle ( 2 , 0x000000 , 1 ) ;
answer . beginFill ( color ) ;
answer . drawRect ( start _x , start _y , game _board _size * 0.5 - 20 , 75 ) ;
answer . endFill ( ) ;
}
function generate _answer _button ( answer , y , start _x , start _y , onclick ) {
draw _rect ( answer , 0xffffff , start _x , start _y ) ;
answer . x = 10 ;
answer . y = game _board _size * 0.72 - 60 - 85 * y ;
answer . interactive = true ;
answer . on ( 'click' , onclick ) ;
return answer ;
}
function generate _answer _text ( answer _text , rect , start _x , start _y ) {
console . log ( rect . width )
answer _text . x = start _x + rect . x + rect . width / 2 - answer _text . width / 2 ;
answer _text . y = start _y + rect . y + rect . height / 2 - answer _text . height / 2 ;
return answer _text
}
2021-06-01 11:24:52 +00:00
function calculate _size ( ) {
if ( game . offsetWidth > game . offsetHeight ) {
return game . offsetHeight ;
} else {
return game . offsetWidth ;
}
2021-05-31 19:42:33 +00:00
}
// Resize
2021-06-01 11:24:52 +00:00
window . addEventListener ( 'resize' , resize ) ;
function resize ( ) {
game _board _size = calculate _size ( ) ;
2021-06-05 15:46:31 +00:00
sprite _size = Math . floor ( game _board _size / 11 ) ;
2021-06-01 11:24:52 +00:00
// Resize container
app . renderer . resize ( game _board _size , game _board _size ) ;
// Resize fields
for ( let i = 0 ; i < 16 ; i ++ ) {
sprites [ i ] . resize ( Math . floor ( game _board _size / 11 ) ) ;
}
// Resize red border
2021-06-05 15:46:31 +00:00
red _border . clear ( ) ;
red _border = generate _red _border ( new PIXI . Graphics ( ) ) ;
app . stage . addChild ( red _border ) ;
// Resize circles
first _circle . clear ( ) ;
first _circle = generate _circle ( new PIXI . Graphics ( ) , 3 , 9 ) ;
app . stage . addChild ( first _circle ) ;
second _circle . clear ( ) ;
second _circle = generate _circle ( new PIXI . Graphics ( ) , 5 , 9 ) ;
app . stage . addChild ( second _circle ) ;
third _circle . clear ( ) ;
third _circle = generate _circle ( new PIXI . Graphics ( ) , 7 , 9 ) ;
app . stage . addChild ( third _circle ) ;
2021-06-01 11:24:52 +00:00
2021-06-06 19:24:15 +00:00
// card stacks
cards _1 . destroy ( ) ;
cards _1 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 3 , 3 , function ( ) {
console . log ( "1" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _1 ) ;
cards _2 . destroy ( ) ;
cards _2 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 5 , 3 , function ( ) {
console . log ( "2" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _2 ) ;
cards _3 . destroy ( ) ;
cards _3 = generate _card _stack ( PIXI . Sprite . from ( '/img/card_stack.png' ) , 7 , 3 , function ( ) {
console . log ( "3" ) ;
generate _card ( "Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores." ) ;
} ) ;
app . stage . addChild ( cards _3 ) ;
// card
2021-06-01 11:24:52 +00:00
}
resize ( ) ;