582 lines
16 KiB
C
582 lines
16 KiB
C
/******************************************************************************
|
||
* ascii_plant_data.c
|
||
*
|
||
* Defines 40 unique ASCII plants, each 10 lines of up to 20 chars.
|
||
*
|
||
* For demonstration, they’ll all be similar in shape, but each one will have
|
||
* some small text or symbol changes so that no two are exactly alike.
|
||
* You can replace these with more distinct art as desired.
|
||
******************************************************************************/
|
||
|
||
#include "ascii_plant_data.h"
|
||
|
||
/*
|
||
* We store all 40 plants’ ASCII lines in a 2D array of strings:
|
||
* PLANTS[40][10]
|
||
* where each string is up to 20 chars + null terminator.
|
||
*
|
||
* Each plant: 10 lines. Each line up to 20 chars wide.
|
||
*/
|
||
|
||
/*
|
||
Template shape (10 lines, 20 chars each):
|
||
" . "
|
||
" .. # "
|
||
" . ==+*- . - "
|
||
" :++*====.# "
|
||
" ==++-=#*+ "
|
||
" -%*=-#+#. "
|
||
" .-+**#. "
|
||
" .**+#. "
|
||
" .:=*++ "
|
||
" :--=. "
|
||
We’ll introduce slight variations for each plant to ensure uniqueness.
|
||
*/
|
||
|
||
static const char PLANT_ART[40][10][21] = {
|
||
/* 0: Snake Plant */
|
||
{
|
||
" . ",
|
||
" .. # ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# ",
|
||
" S==++-=#*+ ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. S ",
|
||
" .**+#. ",
|
||
" .:=*++ S ",
|
||
" :--=. "
|
||
},
|
||
/* 1: Aloe Vera */
|
||
{
|
||
" . ",
|
||
" .. A ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# A ",
|
||
" ==++-=#*+ ",
|
||
" A -%*=-#+#. ",
|
||
" .-+**#. ",
|
||
" .**+#. A ",
|
||
" .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 2: Rubber fig */
|
||
{
|
||
" (Rubber) ",
|
||
" .. # ",
|
||
" R . ==+*- . - ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ R ",
|
||
" -%*=-#+#. ",
|
||
" R .-+**#. ",
|
||
" .**+#. R ",
|
||
" .:=*++ ",
|
||
" :--=. R "
|
||
},
|
||
/* 3: Maidenhair fern */
|
||
{
|
||
" M ",
|
||
" fern .. # ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# M ",
|
||
" ==++-=#*+ f ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ",
|
||
" .**+#. fern ",
|
||
" .:=*++ M ",
|
||
" :--=. "
|
||
},
|
||
/* 4: Zebra Plant */
|
||
{
|
||
" Z e b r a ",
|
||
" .. Z ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# Z ",
|
||
" Z ==++-=#*+ ",
|
||
" -%*=-#+#.Z ",
|
||
" .-+**#. ",
|
||
" .**+#. ",
|
||
" Z .:=*++ ",
|
||
" :--=. Z "
|
||
},
|
||
|
||
/* 5: Jade plant */
|
||
{
|
||
" J ",
|
||
" .. # ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# J ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. ",
|
||
" Jade.-+**#. ",
|
||
" .**+#. ",
|
||
" pl. :=*++ ",
|
||
" :--=. Jade "
|
||
},
|
||
/* 6: Yucca */
|
||
{
|
||
" Yucca ",
|
||
" .. Y ",
|
||
" . ==+*- . - Y ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ Y ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. Y ",
|
||
" .**+#. ",
|
||
" .:=*++ Y ",
|
||
" :--=. "
|
||
},
|
||
/* 7: Chain of Hearts */
|
||
{
|
||
" Chain <3 Hearts ",
|
||
" .. # ",
|
||
" . ==+*- . - <3 ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ <3 ",
|
||
" <3 -%*=-#+#. ",
|
||
" .-+**#. ",
|
||
" .**+#. <3 ",
|
||
" Chain.:=*++ ",
|
||
" :--=. Hearts"
|
||
},
|
||
/* 8: ZZ plant */
|
||
{
|
||
" ZZZ ",
|
||
" .. # Z ",
|
||
" . ==+*- . - ",
|
||
" Z :++*====.# ",
|
||
" ==++-=#*+ ",
|
||
" Z -%*=-#+#. ",
|
||
" .-+**#. Z ",
|
||
" ZZ .**+#. ",
|
||
" .:=*++ ",
|
||
" :--=. ZZ "
|
||
},
|
||
/* 9: Moonstones */
|
||
{
|
||
" (Moon) ",
|
||
" .. # ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# M ",
|
||
" ==++-=#*+ ",
|
||
" oo -%*=-#+#. ",
|
||
" .-+**#. oo ",
|
||
" .**+#. ",
|
||
" stones:=*++ ",
|
||
" :--=. "
|
||
},
|
||
|
||
/* 10: Chinese Money plant */
|
||
{
|
||
" Chinese Money ",
|
||
" .. # $ ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# $ ",
|
||
" ==++-=#*+ $$ ",
|
||
" $$ -%*=-#+#. ",
|
||
" .-+**#. ",
|
||
" $$ .**+#. ",
|
||
" .:=*++ $$ ",
|
||
" :--=. "
|
||
},
|
||
/* 11: String of pearls */
|
||
{
|
||
" String pearls ",
|
||
" ... # o o ",
|
||
" . ==+*- . - o ",
|
||
" :++*====.# o ",
|
||
" ==++-=#*+ o ",
|
||
" -%*=-#+#. o ",
|
||
" .-+**#. o ",
|
||
" .**+#. o ",
|
||
" .:=*++ o ",
|
||
" :--=. "
|
||
},
|
||
/* 12: Air plant */
|
||
{
|
||
" Air plant ",
|
||
" .. # ~ ",
|
||
" . ==+*- . - ~ ",
|
||
" :++*====.# ",
|
||
" A ==++-=#*+ ~ ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ~ ",
|
||
" ~ .**+#. ",
|
||
" .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 13: African milk tree */
|
||
{
|
||
" African milk tree ",
|
||
" AMT .. # ",
|
||
" . ==+*- . - AMT ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ AMT ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. AMT ",
|
||
" .**+#. ",
|
||
" .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 14: pine bonsai */
|
||
{
|
||
" pine bonsai ",
|
||
" .. # ^ ",
|
||
" . ==+*- . - ^ ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ ^ ",
|
||
" -%*=-#+#. ",
|
||
" ^ .-+**#. ",
|
||
" .**+#. ^ ",
|
||
" ^ .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
|
||
/* 15: Lotus */
|
||
{
|
||
" Lotus ",
|
||
" .. # * ",
|
||
" . ==+*- . - * ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ * ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ",
|
||
" * .**+#. ",
|
||
" .:=*++ * ",
|
||
" :--=. "
|
||
},
|
||
/* 16: Heart fern */
|
||
{
|
||
" Heart fern <3 ",
|
||
" .. # ",
|
||
" . ==+*- . - <3 ",
|
||
" :++*====.# <3 ",
|
||
" ==++-=#*+ ",
|
||
" <3 -%*=-#+#. ",
|
||
" .-+**#. <3 ",
|
||
" .**+#. ",
|
||
" <3 .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 17: Corkscrew rush */
|
||
{
|
||
" Corkscrew rush ~@ ",
|
||
" .. # ~@ ",
|
||
" . ==+*- . - ~@ ",
|
||
" :++*====.# ",
|
||
" ~@==++-=#*+ ",
|
||
" -%*=-#+#. ~@ ",
|
||
" .-+**#. ",
|
||
" .**+#. ~@ ",
|
||
" .:=*++ ",
|
||
" :--=. ~@ "
|
||
},
|
||
/* 18: Weeping fig */
|
||
{
|
||
" Weeping fig ~ ",
|
||
" .. # ~ ",
|
||
" . ==+*- . - ",
|
||
" ~ :++*====.# ",
|
||
" ==++-=#*+ ~ ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ~ ",
|
||
" .**+#. ",
|
||
" ~ .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 19: Corkscrew albuca */
|
||
{
|
||
" Corkscrew albuca ",
|
||
" Cka .. # ~@ ",
|
||
" . ==+*- . - ~@ ",
|
||
" :++*====.# ",
|
||
" ~@==++-=#*+ ",
|
||
" -%*=-#+#. ~@ ",
|
||
" .-+**#. ",
|
||
" ~@ .**+#. ",
|
||
" .:=*++ ",
|
||
" :--=. ~@ "
|
||
},
|
||
|
||
/* 20: Fiddle leaf fig */
|
||
{
|
||
" Fiddle leaf fig F ",
|
||
" .. # (leaf) ",
|
||
" ==+*- . - F ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ (leaf) ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. F ",
|
||
" .**+#. ",
|
||
" .:=*++ (leaf) ",
|
||
" :--=. "
|
||
},
|
||
/* 21: Mikado */
|
||
{
|
||
" Mikado | ",
|
||
" .. # | ",
|
||
" . ==+*- . - | ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ | ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ",
|
||
" .**+#. | ",
|
||
" .:=*++ ",
|
||
" :--=. | "
|
||
},
|
||
/* 22: Kebab bush */
|
||
{
|
||
" Kebab bush ~o ",
|
||
" .. # o ",
|
||
" . ==+*- . - o ",
|
||
" :++*====.# ~ ",
|
||
" ~ ==++-=#*+ o ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ~ o ",
|
||
" .**+#. ",
|
||
" o .:=*++ ~ ",
|
||
" :--=. o "
|
||
},
|
||
/* 23: Dwarf Papyrus */
|
||
{
|
||
" Dwarf Papyrus ^ ",
|
||
" .. # ^ ",
|
||
" . ==+*- . - ^ ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ ^ ",
|
||
" ^ -%*=-#+#. ",
|
||
" .-+**#. ^ ",
|
||
" .**+#. ",
|
||
" ^ .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 24: Hobbit Crassula */
|
||
{
|
||
" Hobbit Crassula (H) ",
|
||
" .. # ",
|
||
" . ==+*- . - (H) ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. (H) ",
|
||
" .-+**#. ",
|
||
" (H) .**+#. ",
|
||
" .:=*++ ",
|
||
" :--=. (H) "
|
||
},
|
||
|
||
/* 25: Bunny ear cactus */
|
||
{
|
||
" Bunny ear cactus * ",
|
||
" .. # (ears) ",
|
||
" . ==+*- . - * ",
|
||
" :++*====.# (ears) ",
|
||
" ==++-=#*+ * ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. (ears) ",
|
||
" .**+#. * ",
|
||
" .:=*++ ",
|
||
" :--=. * "
|
||
},
|
||
/* 26: ghost echoversia */
|
||
{
|
||
" ghost echoversia # ",
|
||
" g.. # # ",
|
||
" . ==+*- . - # ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ # ",
|
||
" -%*=-#+#. # ",
|
||
" .-+**#. # ",
|
||
" .**+#. # ",
|
||
" .:=*++ # ",
|
||
" :--=. "
|
||
},
|
||
/* 27: chinese lantern */
|
||
{
|
||
" chinese lantern ",
|
||
" .. # (lantern) ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# (lamp) ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. (lamp) ",
|
||
" .-+**#. ",
|
||
" .**+#. (lantern) ",
|
||
" .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 28: ginseng ficus */
|
||
{
|
||
" ginseng ficus Gf ",
|
||
" .. # Gf ",
|
||
" . ==+*- . - Gf ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. Gf ",
|
||
" .-+**#. ",
|
||
" .**+#. Gf ",
|
||
" .:=*++ ",
|
||
" :--=. "
|
||
},
|
||
/* 29: venus flytrap */
|
||
{
|
||
" venus flytrap V ",
|
||
" .. # x ",
|
||
" . ==+*- . - x ",
|
||
" :++*====.# ",
|
||
" V ==++-=#*+ x ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. x ",
|
||
" V .**+#. ",
|
||
" .:=*++ ",
|
||
" :--=. x "
|
||
},
|
||
|
||
/* 30: Flamingo flower */
|
||
{
|
||
" Flamingo flower F ",
|
||
" .. # (fl) ",
|
||
" . ==+*- . - F ",
|
||
" :++*====.# ",
|
||
" (fl)==++-=#*+ F ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. (fl) ",
|
||
" .**+#. ",
|
||
" F .:=*++ ",
|
||
" :--=. (fl) "
|
||
},
|
||
/* 31: Japanese maple bonsai */
|
||
{
|
||
" Japanese maple bns ",
|
||
" .. # Jmb ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# Jmb ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. ",
|
||
" Jmb .-+**#. ",
|
||
" .**+#. ",
|
||
" .:=*++ Jmb ",
|
||
" :--=. "
|
||
},
|
||
/* 32: Fshbone cactus */
|
||
{
|
||
" Fshbone cactus ~^ ",
|
||
" .. # ~^ ",
|
||
" . ==+*- . - ~^ ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ ~^ ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ~^ ",
|
||
" .**+#. ",
|
||
" .:=*++ ~^ ",
|
||
" :--=. "
|
||
},
|
||
/* 33: Paddle plant */
|
||
{
|
||
" Paddle plant ",
|
||
" .. # == ",
|
||
" . ==+*- . - == ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ == ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. ",
|
||
" == .**+#. ",
|
||
" .:=*++ == ",
|
||
" :--=. "
|
||
},
|
||
/* 34: Donkey's tail */
|
||
{
|
||
" Donkey's tail ~ ",
|
||
" .. # ~ ",
|
||
" . ==+*- . - ~ ",
|
||
" :++*====.# ",
|
||
" ~ ==++-=#*+ ",
|
||
" -%*=-#+#. ~ ",
|
||
" .-+**#. ",
|
||
" ~ .**+#. ",
|
||
" .:=*++ ",
|
||
" :--=. ~ "
|
||
},
|
||
|
||
/* 35: Common ivy */
|
||
{
|
||
" Common ivy ivy ",
|
||
" .. # iv ",
|
||
" . ==+*- . - iv ",
|
||
" iv:++*====.# ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. iv ",
|
||
" .-+**#. ",
|
||
" .**+#. ",
|
||
" iv .:=*++ ",
|
||
" :--=. ivy "
|
||
},
|
||
/* 36: Chinese Crassula */
|
||
{
|
||
" Chinese Crassula C ",
|
||
" .. # (Cr) ",
|
||
" . ==+*- . - (Cr) ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. (Cr) ",
|
||
" .-+**#. ",
|
||
" .**+#. (Cr) ",
|
||
" .:=*++ ",
|
||
" :--=. (Cr) "
|
||
},
|
||
/* 37: Blue Chalksticks */
|
||
{
|
||
" Blue Chalksticks B ",
|
||
" .. # Bc ",
|
||
" . ==+*- . - Bc ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ Bc ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. Bc ",
|
||
" .**+#. ",
|
||
" .:=*++ Bc ",
|
||
" :--=. "
|
||
},
|
||
/* 38: Angel's tears */
|
||
{
|
||
" Angel's tears @A ",
|
||
" .. # tears ",
|
||
" . ==+*- . - @A ",
|
||
" :++*====.# ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. @A ",
|
||
" .-+**#. ",
|
||
" .**+#. tears ",
|
||
" .:=*++ @A ",
|
||
" :--=. "
|
||
},
|
||
/* 39: White clover */
|
||
{
|
||
" White clover (wc) ",
|
||
" .. # (wc) ",
|
||
" . ==+*- . - ",
|
||
" :++*====.# (wc) ",
|
||
" ==++-=#*+ ",
|
||
" -%*=-#+#. ",
|
||
" .-+**#. (wc) ",
|
||
" .**+#. ",
|
||
" .:=*++ (wc)",
|
||
" :--=. "
|
||
}
|
||
};
|
||
|
||
/******************************************************************************
|
||
* getPlantArt
|
||
*
|
||
* Returns the (line)-th line of ASCII art for plantIndex
|
||
******************************************************************************/
|
||
const char* getPlantArt(int plantIndex, int line) {
|
||
if(plantIndex < 0 || plantIndex >= 40) {
|
||
/* Safety: return empty string if out of range */
|
||
return " ";
|
||
}
|
||
if(line < 0 || line >= 10) {
|
||
return " ";
|
||
}
|
||
return PLANT_ART[plantIndex][line];
|
||
}
|
||
|