diff --git a/bob_party/src/Games/CookieClicker/cookieClicker.tsx b/bob_party/src/Games/CookieClicker/cookieClicker.tsx new file mode 100644 index 0000000..74b92a9 --- /dev/null +++ b/bob_party/src/Games/CookieClicker/cookieClicker.tsx @@ -0,0 +1,216 @@ +import React, { Component, useEffect, useState } from 'react' +import { + StyleSheet, + TouchableOpacity, + Text, + View, + Pressable, + Image, + TouchableHighlight, + Alert, +} from 'react-native' +import { MANAGER_USER } from '../../../App'; +import { useUserStore } from '../../context/userContext'; +import { Match } from '../../core/match'; +import { User } from '../../core/User/user'; + + +function CookieClicker(props: { navigation: any, match:Match}){ + + const GAMING_TIME=15; + + const setUser = useUserStore((state) => state.setUser); + + const nav = props.navigation; + const match=props.match; + + const [count, setCount] = useState(0); + const [money, setMoney] = useState(0); + const [clickSpeed, setClickSpeed] = useState(1); + const [grandmaCost, setGrandmaCost] = useState(10); + const [farmCost, setFarmCost] = useState(250); + const [factoryCost, setFactoryCost] = useState(2000); + const [wizardCost, setWizardCost] = useState(25000); + const [portalCost, setPortalCost] = useState(200000); + + const [timer, setTimer] = useState(GAMING_TIME); + + + function onPressCookie(){ + setMoney(money+clickSpeed); + setCount(count+clickSpeed); + } + + function onPressGrandma(){ + if (money>=grandmaCost){ + setMoney(money-grandmaCost); + setClickSpeed(clickSpeed+1); + setGrandmaCost(grandmaCost+10); + } + } + + function onPressFarm(){ + if (money>=farmCost){ + setMoney(money-farmCost); + setClickSpeed(clickSpeed+25); + setFarmCost(farmCost+250); + } + } + + function onPressFactory(){ + if (money>=factoryCost){ + setMoney(money-factoryCost); + setClickSpeed(clickSpeed+200); + setFactoryCost(factoryCost+2000); + } + } + + function onPressWizard(){ + if (money>=wizardCost){ + setMoney(money-wizardCost); + setClickSpeed(clickSpeed+2500); + setWizardCost(wizardCost+25000); + } + } + + function onPressPortal(){ + if (money>=portalCost){ + setMoney(money-portalCost); + setClickSpeed(clickSpeed+20000); + setPortalCost(portalCost+200000); + } + } + + function endGame(){ + let tmp: User | null; + tmp=MANAGER_USER.getCurrentUser(); + if (tmp!=null){ + if (match.getTabUsers().includes(tmp)){ + match.updatePostMatch(tmp, count); + setUser(tmp); + nav.goBack(); + } + } + } + + useEffect(() => { + let counter=GAMING_TIME; + var oneSecInterval = setInterval(() => { + setTimer(timer => timer - 1); + counter --; + + if (counter == 0) { + clearInterval(oneSecInterval); + Alert.alert("fin du jeu"); + endGame(); + } + }, 1000); + },[]); + + + return ( + + + + Timer: {timer} + + + + + + Argent {money} + + + Points {count} + + + + + + + + + Cost {grandmaCost} + + + + + + + + + Cost {farmCost} + + + + + + + + + Cost {factoryCost} + + + + + + + + + Cost {wizardCost} + + + + + + + + + Cost {portalCost} + + + + + + ) + } + +const styles = StyleSheet.create({ + container: { + top: 5, + margin: 10, + flex: 1, + justifyContent: 'center', + alignItems: 'center', + }, + containerRight: { + flex: 1, + flexWrap: "wrap", + top: 100, + marginBottom: 20, + left: 100, + }, + + button: { + alignItems: 'center', + backgroundColor: '#DDDDDD', + padding: 10, + marginBottom: 10 + }, + button2: { + alignItems: 'center', + backgroundColor: '#FFDDFF', + padding: 10, + marginBottom: 10 + }, + photo: { + width: 50, + height: 50 + }, + cout: { + marginBottom: 20 + } + +}) + +export default CookieClicker; \ No newline at end of file diff --git a/bob_party/src/components/GameComponent.tsx b/bob_party/src/components/GameComponent.tsx index fdaa8b7..c778e09 100644 --- a/bob_party/src/components/GameComponent.tsx +++ b/bob_party/src/components/GameComponent.tsx @@ -19,7 +19,7 @@ FC<{game: Game, nav: any}> = { return ( - Alert.alert("Lancement du jeu")}> + nav.navigate('')}> ); +const cookieClicker= new GameSolo("1", "Cookie Clicker", require('../../assets/Icons/UnSelected/Gamepad.png'), "/Games/CookieClicker/cookieClicker.tsx", 1, 1, new Map); function GameChoice(props: { navigation: any; }) { const { navigation } = props return ( @@ -26,7 +26,7 @@ function GameChoice(props: { navigation: any; }) { />