From 4f71612eab4bb8971a0d4008b969084e67d1c9fc Mon Sep 17 00:00:00 2001 From: YanellaFT Date: Wed, 15 Oct 2025 20:31:28 -0400 Subject: [PATCH 1/4] Add files via upload --- games/Sprig... JUMP!.js | 221 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 games/Sprig... JUMP!.js diff --git a/games/Sprig... JUMP!.js b/games/Sprig... JUMP!.js new file mode 100644 index 0000000000..a563582b88 --- /dev/null +++ b/games/Sprig... JUMP!.js @@ -0,0 +1,221 @@ +/* +First time? Check out the tutorial game: +https://sprig.hackclub.com/gallery/getting_started + +@title: Sprig... JUMP! +@author: Yanella FT +@tags: ['game'] +@addedOn: 2025-10-13 +*/ + +const player = "p" +const cactus = "c" +const bird = "b" +const ground = "g" +const house = "h" + +setLegend( + [ player, bitmap` +.......444...... +.......4D4...... +.......4C4...... +........C....... +......LLLLL..... +.....LL1111LL... +.....L111011LL.. +.....L1111111L.. +.....L1111011L.. +.....L1111000L.. +.....L111LLLL... +.....LL11L...... +.....LLL1L...... +.....L111LL..... +.....L111L...... +.....LL11LL.....`], + [ cactus, bitmap` +................ +................ +................ +................ +.......D9.FD.... +...9D..DD.DD.... +...DDF.9DDD9.... +...DDD.DDDDF.... +...FDDDDD....D.. +....DDDDD...DD.. +.......9DDDF9D.. +..F....DDDDDDD.. +..DDD..DD....... +..DDDDDFD....... +...D9DDDD....... +.......D9.......`], + [ bird, bitmap` +................ +................ +................ +................ +................ +.0000.....0000.. +....000..00..... +......0000...... +.......00....... +................ +................ +................ +................ +................ +................ +................`], + [ ground, bitmap` +4444444444444444 +DDDDDDDD4DDDDDD4 +D4DDDD4DDDDDDDDD +DDDDD4DDDDDDD4DD +CCCCCCFCCCCCCCCF +CCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCC +CCFCCCCCCCCCCCCC +CCCCCCCCCCCCFCCC +CCCCCCFCCCCCCCCC +CCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCC +CCFCCCCFCCCCCCCF +CCCCCCCCCCCCFCCC +CCCCCCCCCCCCCCCC +CCCFCCCCFCCCCCCC`], + [ house, bitmap` +.......FFF...... +......FFCFF..... +.....FFCCCFF.... +....FFCC7CCFF... +...FFCC777CCFF.. +..FFCCCCCCCCCFF. +.FFCCCCCCCCCCCFF +.FFFFFFFFFFFFFFF +.FCCCCCCCCCCCCCF +.FCCCC8888CC77CF +.FCCCC8888CC77CF +.FCCCC8888CCCCCF +.FCCCC888HCCC3CF +.FCCCC8888CC333F +.FCCCC8888CCCDCF +.444444444444444`] +) + +setSolids([ player, ground ]) +//setBackground(color`7`); + +let level = 0 +const levels = [ + map` +...... +p.c..h`, + map` +.b...... +...b.... +pc...c.h`, + map` +.b...h +...gcg +pggggg`, + map` +..b... +.....h +b..gbg +.b...g +p..c.g +gcgggg` +] + +setMap(levels[level]) + +//setPushables({ +// [ player ]: [] +//}) + +onInput("d", () => { + getFirst(player).x += 1; //moves player to right +}); +onInput("a", () => { + getFirst(player).x -= 1; //moves player to left +}); +onInput("w", () => { + getFirst(player).y -= 1; //moves player up +}); +onInput("s", () => { + getFirst(player).y += 1; //moves player down +}); +onInput("j", () => { //resets player back to beginning of level + const currentLevel = levels[level]; + if (currentLevel !== undefined) { + setMap(currentLevel); + } +}); + +afterInput(() => { + const end = tilesWith(player, house).length; + const hit1 = tilesWith(player, cactus).length; + const hit2 = tilesWith(player, bird).length; + const winTune = tune` +107.52688172043011: B4^107.52688172043011, +107.52688172043011: C5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: B4-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: B4^107.52688172043011, +107.52688172043011: C5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: D5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: E5^107.52688172043011, +107.52688172043011: D5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: E5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: F5^107.52688172043011, +107.52688172043011: G5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: G5-107.52688172043011 + C4/107.52688172043011, +2150.537634408602`; + const looseTune = tune` +75.37688442211055: B4^75.37688442211055 + C4~75.37688442211055, +75.37688442211055, +75.37688442211055: C4~75.37688442211055 + A4^75.37688442211055, +75.37688442211055, +75.37688442211055: F4^75.37688442211055 + C4~75.37688442211055, +75.37688442211055, +75.37688442211055: E4^75.37688442211055 + C4~75.37688442211055, +1884.4221105527638`; + const finalTune = tune` +211.26760563380282: G4-211.26760563380282 + C5/211.26760563380282, +211.26760563380282: G4^211.26760563380282 + A4^211.26760563380282 + C5/211.26760563380282 + D5/211.26760563380282, +211.26760563380282: F4^211.26760563380282 + E4^211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, +211.26760563380282: A4-211.26760563380282 + B4^211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, +211.26760563380282: C5-211.26760563380282 + E4-211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, +211.26760563380282: B4^211.26760563380282 + F4^211.26760563380282 + D4^211.26760563380282 + D5/211.26760563380282 + C5/211.26760563380282, +211.26760563380282: C5/211.26760563380282 + G4-211.26760563380282 + F4-211.26760563380282 + D4^211.26760563380282 + D5/211.26760563380282, +211.26760563380282: D4^211.26760563380282 + E4^211.26760563380282 + E5/211.26760563380282 + F5/211.26760563380282 + G5/211.26760563380282, +211.26760563380282: B4^211.26760563380282 + G5/211.26760563380282 + F5/211.26760563380282 + E5/211.26760563380282, +211.26760563380282: G4-211.26760563380282 + B4^211.26760563380282 + E5/211.26760563380282 + D5/211.26760563380282, +211.26760563380282: D5~211.26760563380282, +211.26760563380282: D5~211.26760563380282 + G4-211.26760563380282, +4225.352112676056`; + + + if (end === 1) { + const currentLevel = level; + if (currentLevel == 3) { + playTune(finalTune); + addText("You Win!", { x: 5, y: 3, color: color`7` }); + } else { + playTune(winTune); + level = level + 1; + setMap(levels[level]); + } + } + + if (hit1 === 1 || hit2 === 1) { + const currentLevel = level; + if (currentLevel == 3) { + playTune(looseTune); //doesn't work?? + setMap(levels[level]); + } else { + playTune(looseTune); + setMap(levels[level]); + } + } + +}); \ No newline at end of file From ff02152c56b4a2f07cafd53840fe1b824a4581a6 Mon Sep 17 00:00:00 2001 From: YanellaFT Date: Wed, 15 Oct 2025 20:42:24 -0400 Subject: [PATCH 2/4] Delete games/Sprig... JUMP!.js --- games/Sprig... JUMP!.js | 221 ---------------------------------------- 1 file changed, 221 deletions(-) delete mode 100644 games/Sprig... JUMP!.js diff --git a/games/Sprig... JUMP!.js b/games/Sprig... JUMP!.js deleted file mode 100644 index a563582b88..0000000000 --- a/games/Sprig... JUMP!.js +++ /dev/null @@ -1,221 +0,0 @@ -/* -First time? Check out the tutorial game: -https://sprig.hackclub.com/gallery/getting_started - -@title: Sprig... JUMP! -@author: Yanella FT -@tags: ['game'] -@addedOn: 2025-10-13 -*/ - -const player = "p" -const cactus = "c" -const bird = "b" -const ground = "g" -const house = "h" - -setLegend( - [ player, bitmap` -.......444...... -.......4D4...... -.......4C4...... -........C....... -......LLLLL..... -.....LL1111LL... -.....L111011LL.. -.....L1111111L.. -.....L1111011L.. -.....L1111000L.. -.....L111LLLL... -.....LL11L...... -.....LLL1L...... -.....L111LL..... -.....L111L...... -.....LL11LL.....`], - [ cactus, bitmap` -................ -................ -................ -................ -.......D9.FD.... -...9D..DD.DD.... -...DDF.9DDD9.... -...DDD.DDDDF.... -...FDDDDD....D.. -....DDDDD...DD.. -.......9DDDF9D.. -..F....DDDDDDD.. -..DDD..DD....... -..DDDDDFD....... -...D9DDDD....... -.......D9.......`], - [ bird, bitmap` -................ -................ -................ -................ -................ -.0000.....0000.. -....000..00..... -......0000...... -.......00....... -................ -................ -................ -................ -................ -................ -................`], - [ ground, bitmap` -4444444444444444 -DDDDDDDD4DDDDDD4 -D4DDDD4DDDDDDDDD -DDDDD4DDDDDDD4DD -CCCCCCFCCCCCCCCF -CCCCCCCCCCCCCCCC -CCCCCCCCCCCCCCCC -CCFCCCCCCCCCCCCC -CCCCCCCCCCCCFCCC -CCCCCCFCCCCCCCCC -CCCCCCCCCCCCCCCC -CCCCCCCCCCCCCCCC -CCFCCCCFCCCCCCCF -CCCCCCCCCCCCFCCC -CCCCCCCCCCCCCCCC -CCCFCCCCFCCCCCCC`], - [ house, bitmap` -.......FFF...... -......FFCFF..... -.....FFCCCFF.... -....FFCC7CCFF... -...FFCC777CCFF.. -..FFCCCCCCCCCFF. -.FFCCCCCCCCCCCFF -.FFFFFFFFFFFFFFF -.FCCCCCCCCCCCCCF -.FCCCC8888CC77CF -.FCCCC8888CC77CF -.FCCCC8888CCCCCF -.FCCCC888HCCC3CF -.FCCCC8888CC333F -.FCCCC8888CCCDCF -.444444444444444`] -) - -setSolids([ player, ground ]) -//setBackground(color`7`); - -let level = 0 -const levels = [ - map` -...... -p.c..h`, - map` -.b...... -...b.... -pc...c.h`, - map` -.b...h -...gcg -pggggg`, - map` -..b... -.....h -b..gbg -.b...g -p..c.g -gcgggg` -] - -setMap(levels[level]) - -//setPushables({ -// [ player ]: [] -//}) - -onInput("d", () => { - getFirst(player).x += 1; //moves player to right -}); -onInput("a", () => { - getFirst(player).x -= 1; //moves player to left -}); -onInput("w", () => { - getFirst(player).y -= 1; //moves player up -}); -onInput("s", () => { - getFirst(player).y += 1; //moves player down -}); -onInput("j", () => { //resets player back to beginning of level - const currentLevel = levels[level]; - if (currentLevel !== undefined) { - setMap(currentLevel); - } -}); - -afterInput(() => { - const end = tilesWith(player, house).length; - const hit1 = tilesWith(player, cactus).length; - const hit2 = tilesWith(player, bird).length; - const winTune = tune` -107.52688172043011: B4^107.52688172043011, -107.52688172043011: C5-107.52688172043011 + C4/107.52688172043011, -107.52688172043011: B4-107.52688172043011 + C4/107.52688172043011, -107.52688172043011: B4^107.52688172043011, -107.52688172043011: C5-107.52688172043011 + C4/107.52688172043011, -107.52688172043011: D5-107.52688172043011 + C4/107.52688172043011, -107.52688172043011: E5^107.52688172043011, -107.52688172043011: D5-107.52688172043011 + C4/107.52688172043011, -107.52688172043011: E5-107.52688172043011 + C4/107.52688172043011, -107.52688172043011: F5^107.52688172043011, -107.52688172043011: G5-107.52688172043011 + C4/107.52688172043011, -107.52688172043011: G5-107.52688172043011 + C4/107.52688172043011, -2150.537634408602`; - const looseTune = tune` -75.37688442211055: B4^75.37688442211055 + C4~75.37688442211055, -75.37688442211055, -75.37688442211055: C4~75.37688442211055 + A4^75.37688442211055, -75.37688442211055, -75.37688442211055: F4^75.37688442211055 + C4~75.37688442211055, -75.37688442211055, -75.37688442211055: E4^75.37688442211055 + C4~75.37688442211055, -1884.4221105527638`; - const finalTune = tune` -211.26760563380282: G4-211.26760563380282 + C5/211.26760563380282, -211.26760563380282: G4^211.26760563380282 + A4^211.26760563380282 + C5/211.26760563380282 + D5/211.26760563380282, -211.26760563380282: F4^211.26760563380282 + E4^211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, -211.26760563380282: A4-211.26760563380282 + B4^211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, -211.26760563380282: C5-211.26760563380282 + E4-211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, -211.26760563380282: B4^211.26760563380282 + F4^211.26760563380282 + D4^211.26760563380282 + D5/211.26760563380282 + C5/211.26760563380282, -211.26760563380282: C5/211.26760563380282 + G4-211.26760563380282 + F4-211.26760563380282 + D4^211.26760563380282 + D5/211.26760563380282, -211.26760563380282: D4^211.26760563380282 + E4^211.26760563380282 + E5/211.26760563380282 + F5/211.26760563380282 + G5/211.26760563380282, -211.26760563380282: B4^211.26760563380282 + G5/211.26760563380282 + F5/211.26760563380282 + E5/211.26760563380282, -211.26760563380282: G4-211.26760563380282 + B4^211.26760563380282 + E5/211.26760563380282 + D5/211.26760563380282, -211.26760563380282: D5~211.26760563380282, -211.26760563380282: D5~211.26760563380282 + G4-211.26760563380282, -4225.352112676056`; - - - if (end === 1) { - const currentLevel = level; - if (currentLevel == 3) { - playTune(finalTune); - addText("You Win!", { x: 5, y: 3, color: color`7` }); - } else { - playTune(winTune); - level = level + 1; - setMap(levels[level]); - } - } - - if (hit1 === 1 || hit2 === 1) { - const currentLevel = level; - if (currentLevel == 3) { - playTune(looseTune); //doesn't work?? - setMap(levels[level]); - } else { - playTune(looseTune); - setMap(levels[level]); - } - } - -}); \ No newline at end of file From 3c46cebbfbc747e493a431749a709bba621fd9ac Mon Sep 17 00:00:00 2001 From: YanellaFT Date: Wed, 15 Oct 2025 20:44:16 -0400 Subject: [PATCH 3/4] Add files via upload --- games/SprigJUMP.js | 221 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 221 insertions(+) create mode 100644 games/SprigJUMP.js diff --git a/games/SprigJUMP.js b/games/SprigJUMP.js new file mode 100644 index 0000000000..a563582b88 --- /dev/null +++ b/games/SprigJUMP.js @@ -0,0 +1,221 @@ +/* +First time? Check out the tutorial game: +https://sprig.hackclub.com/gallery/getting_started + +@title: Sprig... JUMP! +@author: Yanella FT +@tags: ['game'] +@addedOn: 2025-10-13 +*/ + +const player = "p" +const cactus = "c" +const bird = "b" +const ground = "g" +const house = "h" + +setLegend( + [ player, bitmap` +.......444...... +.......4D4...... +.......4C4...... +........C....... +......LLLLL..... +.....LL1111LL... +.....L111011LL.. +.....L1111111L.. +.....L1111011L.. +.....L1111000L.. +.....L111LLLL... +.....LL11L...... +.....LLL1L...... +.....L111LL..... +.....L111L...... +.....LL11LL.....`], + [ cactus, bitmap` +................ +................ +................ +................ +.......D9.FD.... +...9D..DD.DD.... +...DDF.9DDD9.... +...DDD.DDDDF.... +...FDDDDD....D.. +....DDDDD...DD.. +.......9DDDF9D.. +..F....DDDDDDD.. +..DDD..DD....... +..DDDDDFD....... +...D9DDDD....... +.......D9.......`], + [ bird, bitmap` +................ +................ +................ +................ +................ +.0000.....0000.. +....000..00..... +......0000...... +.......00....... +................ +................ +................ +................ +................ +................ +................`], + [ ground, bitmap` +4444444444444444 +DDDDDDDD4DDDDDD4 +D4DDDD4DDDDDDDDD +DDDDD4DDDDDDD4DD +CCCCCCFCCCCCCCCF +CCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCC +CCFCCCCCCCCCCCCC +CCCCCCCCCCCCFCCC +CCCCCCFCCCCCCCCC +CCCCCCCCCCCCCCCC +CCCCCCCCCCCCCCCC +CCFCCCCFCCCCCCCF +CCCCCCCCCCCCFCCC +CCCCCCCCCCCCCCCC +CCCFCCCCFCCCCCCC`], + [ house, bitmap` +.......FFF...... +......FFCFF..... +.....FFCCCFF.... +....FFCC7CCFF... +...FFCC777CCFF.. +..FFCCCCCCCCCFF. +.FFCCCCCCCCCCCFF +.FFFFFFFFFFFFFFF +.FCCCCCCCCCCCCCF +.FCCCC8888CC77CF +.FCCCC8888CC77CF +.FCCCC8888CCCCCF +.FCCCC888HCCC3CF +.FCCCC8888CC333F +.FCCCC8888CCCDCF +.444444444444444`] +) + +setSolids([ player, ground ]) +//setBackground(color`7`); + +let level = 0 +const levels = [ + map` +...... +p.c..h`, + map` +.b...... +...b.... +pc...c.h`, + map` +.b...h +...gcg +pggggg`, + map` +..b... +.....h +b..gbg +.b...g +p..c.g +gcgggg` +] + +setMap(levels[level]) + +//setPushables({ +// [ player ]: [] +//}) + +onInput("d", () => { + getFirst(player).x += 1; //moves player to right +}); +onInput("a", () => { + getFirst(player).x -= 1; //moves player to left +}); +onInput("w", () => { + getFirst(player).y -= 1; //moves player up +}); +onInput("s", () => { + getFirst(player).y += 1; //moves player down +}); +onInput("j", () => { //resets player back to beginning of level + const currentLevel = levels[level]; + if (currentLevel !== undefined) { + setMap(currentLevel); + } +}); + +afterInput(() => { + const end = tilesWith(player, house).length; + const hit1 = tilesWith(player, cactus).length; + const hit2 = tilesWith(player, bird).length; + const winTune = tune` +107.52688172043011: B4^107.52688172043011, +107.52688172043011: C5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: B4-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: B4^107.52688172043011, +107.52688172043011: C5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: D5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: E5^107.52688172043011, +107.52688172043011: D5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: E5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: F5^107.52688172043011, +107.52688172043011: G5-107.52688172043011 + C4/107.52688172043011, +107.52688172043011: G5-107.52688172043011 + C4/107.52688172043011, +2150.537634408602`; + const looseTune = tune` +75.37688442211055: B4^75.37688442211055 + C4~75.37688442211055, +75.37688442211055, +75.37688442211055: C4~75.37688442211055 + A4^75.37688442211055, +75.37688442211055, +75.37688442211055: F4^75.37688442211055 + C4~75.37688442211055, +75.37688442211055, +75.37688442211055: E4^75.37688442211055 + C4~75.37688442211055, +1884.4221105527638`; + const finalTune = tune` +211.26760563380282: G4-211.26760563380282 + C5/211.26760563380282, +211.26760563380282: G4^211.26760563380282 + A4^211.26760563380282 + C5/211.26760563380282 + D5/211.26760563380282, +211.26760563380282: F4^211.26760563380282 + E4^211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, +211.26760563380282: A4-211.26760563380282 + B4^211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, +211.26760563380282: C5-211.26760563380282 + E4-211.26760563380282 + D4^211.26760563380282 + E5/211.26760563380282, +211.26760563380282: B4^211.26760563380282 + F4^211.26760563380282 + D4^211.26760563380282 + D5/211.26760563380282 + C5/211.26760563380282, +211.26760563380282: C5/211.26760563380282 + G4-211.26760563380282 + F4-211.26760563380282 + D4^211.26760563380282 + D5/211.26760563380282, +211.26760563380282: D4^211.26760563380282 + E4^211.26760563380282 + E5/211.26760563380282 + F5/211.26760563380282 + G5/211.26760563380282, +211.26760563380282: B4^211.26760563380282 + G5/211.26760563380282 + F5/211.26760563380282 + E5/211.26760563380282, +211.26760563380282: G4-211.26760563380282 + B4^211.26760563380282 + E5/211.26760563380282 + D5/211.26760563380282, +211.26760563380282: D5~211.26760563380282, +211.26760563380282: D5~211.26760563380282 + G4-211.26760563380282, +4225.352112676056`; + + + if (end === 1) { + const currentLevel = level; + if (currentLevel == 3) { + playTune(finalTune); + addText("You Win!", { x: 5, y: 3, color: color`7` }); + } else { + playTune(winTune); + level = level + 1; + setMap(levels[level]); + } + } + + if (hit1 === 1 || hit2 === 1) { + const currentLevel = level; + if (currentLevel == 3) { + playTune(looseTune); //doesn't work?? + setMap(levels[level]); + } else { + playTune(looseTune); + setMap(levels[level]); + } + } + +}); \ No newline at end of file From 3b709e1c370a20ed37e1057a0167702d509c9a95 Mon Sep 17 00:00:00 2001 From: YanellaFT Date: Wed, 22 Oct 2025 21:18:35 -0400 Subject: [PATCH 4/4] SprigJUMP files **Author: Yanella Fernandez (BooleanBunny14)** **What is your game about?** Get Sprig to the safety of his house without running into birds or cactuses! **How do you play your game?** Moving character to end without having to restart Press WASD to move, goal is to get to Sprig to the house without being reset by cactuses or birds. ## Code Check off the items that are true. - [ x] The game was made using the [Sprig editor](https://sprig.hackclub.com/editor). - [ x] The game is placed in the in the [`/games` directory](https://github.com/hackclub/sprig/tree/main/games). - [ x] The code is significantly different from all other games in the [Sprig gallery](https://sprig.hackclub.com/gallery) (except for games labeled "demo"). - [ x] The game runs without errors. - [x ] The name of the file/game contains only alphanumeric characters, `-`s, or `_`s. - [ x] The game name is not the same as the others from [gallery](https://sprig.hackclub.com/gallery) - [ x] The game has metadata at the top of the file in the following format: > /* > @title: > @author: > @description: > @tags: [] > @addedOn: 2025-MM-DD > */ ## Image (If an image is used) - [ ] The image is in the [`/games/img` directory](https://github.com/hackclub/sprig/tree/main/games/img). - [ ] The name of the image matches the name of your file. > Thanks for your PR! --- games/SprigJUMP.js | 1 + 1 file changed, 1 insertion(+) diff --git a/games/SprigJUMP.js b/games/SprigJUMP.js index a563582b88..385c1e5783 100644 --- a/games/SprigJUMP.js +++ b/games/SprigJUMP.js @@ -4,6 +4,7 @@ https://sprig.hackclub.com/gallery/getting_started @title: Sprig... JUMP! @author: Yanella FT +@description: get Sprig to safety without hittin birds or cactuses! @tags: ['game'] @addedOn: 2025-10-13 */