Spaces:
Running
Running
feat: merge
Browse files- .DS_Store +0 -0
- app.py +4 -1
- chat_history.json +158 -0
- games/game_9/round_consequences.json +6 -0
- games/game_9/round_context.json +6 -0
- games/game_9/world_graph.edgelist +81 -0
- static/images/game_over.png +0 -0
- static/images/intro/Intro.jpg +0 -0
- static/images/intro/fire3.png +0 -0
- static/images/trump_popup.jpg +0 -0
- static/index.html +143 -13
- static/intro.html +148 -0
- static/styles.css +362 -212
.DS_Store
ADDED
Binary file (6.15 kB). View file
|
|
app.py
CHANGED
@@ -169,5 +169,8 @@ async def send_message(message: Message):
|
|
169 |
raise e
|
170 |
raise HTTPException(status_code=500, detail=str(e))
|
171 |
|
172 |
-
#
|
|
|
|
|
|
|
173 |
app.mount("/", StaticFiles(directory="static", html=True), name="static")
|
|
|
169 |
raise e
|
170 |
raise HTTPException(status_code=500, detail=str(e))
|
171 |
|
172 |
+
# Add this before the final static files mount
|
173 |
+
app.mount("/images", StaticFiles(directory="static/images"), name="images")
|
174 |
+
|
175 |
+
# Keep this as the last mount
|
176 |
app.mount("/", StaticFiles(directory="static", html=True), name="static")
|
chat_history.json
ADDED
@@ -0,0 +1,158 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
[
|
2 |
+
{
|
3 |
+
"interaction_1": {
|
4 |
+
"user": {
|
5 |
+
"role": "user",
|
6 |
+
"message": "hi"
|
7 |
+
},
|
8 |
+
"trump": {
|
9 |
+
"role": "Trump",
|
10 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO BE BACK IN THE OVAL OFFICE, AND IT'S EVEN BETTER TO HEAR FROM YOU. WE'VE GOT A LOT OF WORK TO DO, AND I KNOW YOU'RE GOING TO BE A BIG PART OF MAKING AMERICA GREAT AGAIN. SO, LET'S GET STARTED, AND LET'S MAKE SURE WE PUT AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
11 |
+
}
|
12 |
+
}
|
13 |
+
},
|
14 |
+
{
|
15 |
+
"interaction_2": {
|
16 |
+
"user": {
|
17 |
+
"role": "user",
|
18 |
+
"message": "hi"
|
19 |
+
},
|
20 |
+
"trump": {
|
21 |
+
"role": "Trump",
|
22 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
23 |
+
}
|
24 |
+
}
|
25 |
+
},
|
26 |
+
{
|
27 |
+
"interaction_3": {
|
28 |
+
"user": {
|
29 |
+
"role": "user",
|
30 |
+
"message": "hi"
|
31 |
+
},
|
32 |
+
"trump": {
|
33 |
+
"role": "Trump",
|
34 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
35 |
+
}
|
36 |
+
}
|
37 |
+
},
|
38 |
+
{
|
39 |
+
"interaction_4": {
|
40 |
+
"user": {
|
41 |
+
"role": "user",
|
42 |
+
"message": "hi"
|
43 |
+
},
|
44 |
+
"trump": {
|
45 |
+
"role": "Trump",
|
46 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
47 |
+
}
|
48 |
+
}
|
49 |
+
},
|
50 |
+
{
|
51 |
+
"interaction_5": {
|
52 |
+
"user": {
|
53 |
+
"role": "user",
|
54 |
+
"message": "hi"
|
55 |
+
},
|
56 |
+
"trump": {
|
57 |
+
"role": "Trump",
|
58 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
59 |
+
}
|
60 |
+
}
|
61 |
+
},
|
62 |
+
{
|
63 |
+
"interaction_6": {
|
64 |
+
"user": {
|
65 |
+
"role": "user",
|
66 |
+
"message": "hi"
|
67 |
+
},
|
68 |
+
"trump": {
|
69 |
+
"role": "Trump",
|
70 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
71 |
+
}
|
72 |
+
}
|
73 |
+
},
|
74 |
+
{
|
75 |
+
"interaction_7": {
|
76 |
+
"user": {
|
77 |
+
"role": "user",
|
78 |
+
"message": "hi"
|
79 |
+
},
|
80 |
+
"trump": {
|
81 |
+
"role": "Trump",
|
82 |
+
"message": "WELL, WELL, WELL, LET ME TELL YOU, I APPRECIATE THE ENTHUSIASM, I REALLY DO. BUT WE NEED TO FOCUS ON WHAT'S IMPORTANT. GREENLAND, YOU SAY? IT'S A BEAUTIFUL PLACE, BUT WE HAVE TO THINK ABOUT WHAT'S BEST FOR AMERICA. KAMALA AND BIDEN HAVE LEFT US WITH A HUGE MESS, AND WE NEED TO CLEAN IT UP FIRST. BUT YOU KNOW WHAT? I LIKE YOUR ENTHUSIASM. LET'S TALK ABOUT IT. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC, NOT LIKE THESE DEMOCRATS WHO JUST THROW MONEY AROUND AND HOPE FOR THE BEST. LET'S HEAR YOUR IDEAS, AND MAYBE, JUST MAYBE, WE CAN MAKE SOMETHING HAPPEN. BUT REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
83 |
+
}
|
84 |
+
}
|
85 |
+
},
|
86 |
+
{
|
87 |
+
"interaction_8": {
|
88 |
+
"user": {
|
89 |
+
"role": "user",
|
90 |
+
"message": "hi"
|
91 |
+
},
|
92 |
+
"trump": {
|
93 |
+
"role": "Trump",
|
94 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN.\n\nYOU KNOW, SOMETIMES YOU NEED TO SHOW A LITTLE LOVE TO GET THINGS DONE. IT'S LIKE WHEN I SAY, \"I LOVE OUR COUNTRY,\" AND EVERYONE GETS EXCITED. IT'S ALL ABOUT THE HEART, YOU KNOW? BUT LET'S GET BACK TO BUSINESS. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC. WE CAN'T JUST RUSH INTO THINGS LIKE THE DEMOCRATS DO. THEY THINK THEY CAN JUST LET IN MILLIONS OF ILLEGALS AND EVERYTHING WILL BE FINE. BUT WE KNOW BETTER, DON'T WE? SO, TELL ME, WHAT'S YOUR STRATEGY FOR GREENLAND? AND REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
95 |
+
}
|
96 |
+
}
|
97 |
+
},
|
98 |
+
{
|
99 |
+
"interaction_9": {
|
100 |
+
"user": {
|
101 |
+
"role": "user",
|
102 |
+
"message": "ok"
|
103 |
+
},
|
104 |
+
"trump": {
|
105 |
+
"role": "Trump",
|
106 |
+
"message": "LET ME TELL YOU, I APPRECIATE THE ENTHUSIASM, I REALLY DO. BUT WE NEED TO FOCUS ON WHAT'S IMPORTANT. GREENLAND, YOU SAY? IT'S A BEAUTIFUL PLACE, BUT WE HAVE TO THINK ABOUT WHAT'S BEST FOR AMERICA. KAMALA AND BIDEN HAVE LEFT US WITH A HUGE MESS, AND WE NEED TO CLEAN IT UP FIRST. BUT YOU KNOW WHAT? I LIKE YOUR ENTHUSIASM. LET'S TALK ABOUT IT. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC, NOT LIKE THESE DEMOCRATS WHO JUST THROW MONEY AROUND AND HOPE FOR THE BEST. LET'S HEAR YOUR IDEAS, AND MAYBE, JUST MAYBE, WE CAN MAKE SOMETHING HAPPEN. BUT REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN.\n\nYOU KNOW, SOMETIMES YOU NEED TO SHOW A LITTLE LOVE TO GET THINGS DONE. IT'S LIKE WHEN I SAY, \"I LOVE OUR COUNTRY,\" AND EVERYONE GETS EXCITED. IT'S ALL ABOUT THE HEART, YOU KNOW? BUT LET'S GET BACK TO BUSINESS. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC. WE CAN'T JUST RUSH INTO THINGS LIKE THE DEMOCRATS DO. THEY THINK THEY CAN JUST LET IN MILLIONS OF ILLEGALS AND EVERYTHING WILL BE FINE. BUT WE KNOW BETTER, DON'T WE? SO, TELL ME, WHAT'S YOUR STRATEGY FOR GREENLAND? AND REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
107 |
+
}
|
108 |
+
}
|
109 |
+
},
|
110 |
+
{
|
111 |
+
"interaction_10": {
|
112 |
+
"user": {
|
113 |
+
"role": "user",
|
114 |
+
"message": "hi"
|
115 |
+
},
|
116 |
+
"trump": {
|
117 |
+
"role": "Trump",
|
118 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN.\n\nYOU KNOW, SOMETIMES YOU NEED TO SHOW A LITTLE LOVE TO GET THINGS DONE. IT'S LIKE WHEN I SAY, \"I LOVE OUR COUNTRY,\" AND EVERYONE GETS EXCITED. IT'S ALL ABOUT THE HEART, YOU KNOW? BUT LET'S GET BACK TO BUSINESS. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC. WE CAN'T JUST RUSH INTO THINGS LIKE THE DEMOCRATS DO. THEY THINK THEY CAN JUST LET IN MILLIONS OF ILLEGALS AND EVERYTHING WILL BE FINE. BUT WE KNOW BETTER, DON'T WE? SO, TELL ME, WHAT'S YOUR STRATEGY FOR GREENLAND? AND REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
119 |
+
}
|
120 |
+
}
|
121 |
+
},
|
122 |
+
{
|
123 |
+
"interaction_11": {
|
124 |
+
"user": {
|
125 |
+
"role": "user",
|
126 |
+
"message": "hi"
|
127 |
+
},
|
128 |
+
"trump": {
|
129 |
+
"role": "Trump",
|
130 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN.\n\nYOU KNOW, SOMETIMES YOU NEED TO SHOW A LITTLE LOVE TO GET THINGS DONE. IT'S LIKE WHEN I SAY, \"I LOVE OUR COUNTRY,\" AND EVERYONE GETS EXCITED. IT'S ALL ABOUT THE HEART, YOU KNOW? BUT LET'S GET BACK TO BUSINESS. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC. WE CAN'T JUST RUSH INTO THINGS LIKE THE DEMOCRATS DO. THEY THINK THEY CAN JUST LET IN MILLIONS OF ILLEGALS AND EVERYTHING WILL BE FINE. BUT WE KNOW BETTER, DON'T WE? SO, TELL ME, WHAT'S YOUR STRATEGY FOR GREENLAND? AND REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
131 |
+
}
|
132 |
+
}
|
133 |
+
},
|
134 |
+
{
|
135 |
+
"interaction_12": {
|
136 |
+
"user": {
|
137 |
+
"role": "user",
|
138 |
+
"message": "hi"
|
139 |
+
},
|
140 |
+
"trump": {
|
141 |
+
"role": "Trump",
|
142 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN.\n\nYOU KNOW, SOMETIMES YOU NEED TO SHOW A LITTLE LOVE TO GET THINGS DONE. IT'S LIKE WHEN I SAY, \"I LOVE OUR COUNTRY,\" AND EVERYONE GETS EXCITED. IT'S ALL ABOUT THE HEART, YOU KNOW? BUT LET'S GET BACK TO BUSINESS. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC. WE CAN'T JUST RUSH INTO THINGS LIKE THE DEMOCRATS DO. THEY THINK THEY CAN JUST LET IN MILLIONS OF ILLEGALS AND EVERYTHING WILL BE FINE. BUT WE KNOW BETTER, DON'T WE? SO, TELL ME, WHAT'S YOUR STRATEGY FOR GREENLAND? AND REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
143 |
+
}
|
144 |
+
}
|
145 |
+
},
|
146 |
+
{
|
147 |
+
"interaction_13": {
|
148 |
+
"user": {
|
149 |
+
"role": "user",
|
150 |
+
"message": "hi"
|
151 |
+
},
|
152 |
+
"trump": {
|
153 |
+
"role": "Trump",
|
154 |
+
"message": "LET ME TELL YOU, IT'S GREAT TO HEAR FROM YOU AGAIN. WE'RE JUST GETTING STARTED, AND THERE'S SO MUCH TO DO. WE NEED TO FOCUS ON WHAT'S IMPORTANT AND MAKE AMERICA GREAT AGAIN. KAMALA AND BIDEN HAVE LEFT US WITH A MESS, AND WE NEED TO CLEAN IT UP. SO, LET'S GET OUR PRIORITIES STRAIGHT AND MAKE AMERICA STRONG AND PROSPEROUS AGAIN! WHAT'S ON YOUR MIND TODAY? REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN.\n\nYOU KNOW, SOMETIMES YOU NEED TO SHOW A LITTLE LOVE TO GET THINGS DONE. IT'S LIKE WHEN I SAY, \"I LOVE OUR COUNTRY,\" AND EVERYONE GETS EXCITED. IT'S ALL ABOUT THE HEART, YOU KNOW? BUT LET'S GET BACK TO BUSINESS. WHAT'S YOUR PLAN FOR GREENLAND? REMEMBER, WE NEED TO BE SMART AND STRATEGIC. WE CAN'T JUST RUSH INTO THINGS LIKE THE DEMOCRATS DO. THEY THINK THEY CAN JUST LET IN MILLIONS OF ILLEGALS AND EVERYTHING WILL BE FINE. BUT WE KNOW BETTER, DON'T WE? SO, TELL ME, WHAT'S YOUR STRATEGY FOR GREENLAND? AND REMEMBER, AMERICA FIRST, ALWAYS! #MAGA #TRUMP2025 #BUYMYMEMECOIN."
|
155 |
+
}
|
156 |
+
}
|
157 |
+
}
|
158 |
+
]
|
games/game_9/round_consequences.json
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"country": "Mexico",
|
3 |
+
"delta_USA": "0",
|
4 |
+
"delta_country": "-5",
|
5 |
+
"delta_friendliness": "-1"
|
6 |
+
}
|
games/game_9/round_context.json
ADDED
@@ -0,0 +1,6 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
{
|
2 |
+
"idea": "Blame Mexico for a stock market crash",
|
3 |
+
"concern": "How will it affect China\n",
|
4 |
+
"advisor": "George Soros. The villain in every conspiracy theory worth believing. His shadow looms everywhere, and even when he's not involved, it feels like he is. Your supporters fear him; you should too.\n",
|
5 |
+
"events": ""
|
6 |
+
}
|
games/game_9/world_graph.edgelist
ADDED
@@ -0,0 +1,81 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
# Own and friendly relationships
|
2 |
+
China Taiwan own 1
|
3 |
+
China India friendliness -1
|
4 |
+
China Australia friendliness 0
|
5 |
+
Taiwan China own -1
|
6 |
+
Australia Pacific own 1
|
7 |
+
Pacific Australia own -1
|
8 |
+
Greenland Europe own -1
|
9 |
+
Europe Greenland own 1
|
10 |
+
Europe Middle-East friendliness -1
|
11 |
+
Europe Russia friendliness 0
|
12 |
+
Europe China friendliness 0
|
13 |
+
Europe India friendliness 0
|
14 |
+
Europe Australia friendliness 1
|
15 |
+
United-States Canada friendliness 0
|
16 |
+
United-States Mexico friendliness -1
|
17 |
+
United-States South-America friendliness -1
|
18 |
+
United-States Africa friendliness 0
|
19 |
+
United-States Europe friendliness 1
|
20 |
+
United-States Middle-East friendliness -1
|
21 |
+
United-States Russia friendliness -1
|
22 |
+
United-States China friendliness -1
|
23 |
+
United-States India friendliness 0
|
24 |
+
United-States Australia friendliness 1
|
25 |
+
United-States Greenland friendliness -2
|
26 |
+
United-States Pacific friendliness 1
|
27 |
+
United-States Taiwan friendliness 1
|
28 |
+
Canada Mexico friendliness 0
|
29 |
+
Canada South-America friendliness 0
|
30 |
+
Canada Africa friendliness 0
|
31 |
+
Canada Europe friendliness 1
|
32 |
+
Canada Middle-East friendliness 0
|
33 |
+
Canada Russia friendliness 0
|
34 |
+
Canada China friendliness 0
|
35 |
+
Canada India friendliness 0
|
36 |
+
Canada Australia friendliness 1
|
37 |
+
Mexico South-America friendliness 1
|
38 |
+
Mexico Africa friendliness 0
|
39 |
+
Mexico Europe friendliness 0
|
40 |
+
Mexico Middle-East friendliness 0
|
41 |
+
Mexico Russia friendliness 0
|
42 |
+
Mexico China friendliness 0
|
43 |
+
Mexico India friendliness 0
|
44 |
+
Mexico Australia friendliness 0
|
45 |
+
South-America Africa friendliness 0
|
46 |
+
South-America Europe friendliness 1
|
47 |
+
South-America Middle-East friendliness 0
|
48 |
+
South-America Russia friendliness 0
|
49 |
+
South-America China friendliness 0
|
50 |
+
South-America India friendliness 0
|
51 |
+
South-America Australia friendliness 0
|
52 |
+
Africa Europe friendliness -1
|
53 |
+
Africa Middle-East friendliness 1
|
54 |
+
Africa Russia friendliness 1
|
55 |
+
Africa China friendliness 1
|
56 |
+
Africa India friendliness 0
|
57 |
+
Africa Australia friendliness 0
|
58 |
+
Middle-East Russia friendliness 1
|
59 |
+
Middle-East China friendliness 0
|
60 |
+
Middle-East India friendliness -1
|
61 |
+
Middle-East Australia friendliness 0
|
62 |
+
Russia China friendliness 1
|
63 |
+
Russia India friendliness 0
|
64 |
+
Russia Australia friendliness 0
|
65 |
+
India Australia friendliness 0
|
66 |
+
|
67 |
+
# Node attributes (country Money Warming Army)
|
68 |
+
China 70 1.1 70
|
69 |
+
Taiwan 25 0.3 10
|
70 |
+
Australia 55 0.2 35
|
71 |
+
Pacific 10 0.1 0
|
72 |
+
Greenland 20 0.05 0
|
73 |
+
Europe 70 0.7 50
|
74 |
+
United-States 100 0.8 90
|
75 |
+
Canada 60 0.3 20
|
76 |
+
Mexico 40 0.4 20
|
77 |
+
South-America 50 0.6 40
|
78 |
+
Africa 40 0.5 40
|
79 |
+
Middle-East 45 0.6 45
|
80 |
+
Russia 70 0.9 85
|
81 |
+
India 55 0.9 60
|
static/images/game_over.png
ADDED
![]() |
static/images/intro/Intro.jpg
ADDED
![]() |
static/images/intro/fire3.png
ADDED
![]() |
static/images/trump_popup.jpg
ADDED
![]() |
static/index.html
CHANGED
@@ -16,11 +16,9 @@
|
|
16 |
<div class="profile-text">
|
17 |
<h2>Donald J. Trump</h2>
|
18 |
<span>@realDonaldTrump</span>
|
19 |
-
<p>
|
20 |
-
|
21 |
-
|
22 |
-
A rejoint X en mars 2009
|
23 |
-
</p>
|
24 |
</div>
|
25 |
<div class="divider"></div>
|
26 |
</div>
|
@@ -31,11 +29,40 @@
|
|
31 |
</div>
|
32 |
</div>
|
33 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
<!-- Ajout : container pour la carte SVG à droite -->
|
35 |
<div class="map-container">
|
36 |
-
<svg
|
37 |
-
id="worldMap"
|
38 |
-
xmlns="http://www.w3.org/2000/svg"
|
39 |
viewBox="0 0 2000 1200"
|
40 |
>
|
41 |
<!-- Les paths seront injectés en JavaScript -->
|
@@ -50,18 +77,18 @@
|
|
50 |
const chatWindow = document.getElementById('chatWindow');
|
51 |
const messageDiv = document.createElement('div');
|
52 |
messageDiv.className = `message ${isUser ? 'user' : 'trump'}`;
|
53 |
-
|
54 |
if (!isUser) {
|
55 |
const img = document.createElement('img');
|
56 |
img.src = '/images/donald_trump.jpg';
|
57 |
img.alt = 'Trump';
|
58 |
messageDiv.appendChild(img);
|
59 |
}
|
60 |
-
|
61 |
const contentDiv = document.createElement('div');
|
62 |
contentDiv.className = 'message-content';
|
63 |
contentDiv.textContent = message;
|
64 |
-
|
65 |
messageDiv.appendChild(contentDiv);
|
66 |
chatWindow.appendChild(messageDiv);
|
67 |
chatWindow.scrollTop = chatWindow.scrollHeight;
|
@@ -143,6 +170,109 @@
|
|
143 |
});
|
144 |
|
145 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
146 |
// ============================
|
147 |
// AJOUT : GESTION DE LA CARTE SVG
|
148 |
// ============================
|
@@ -815,12 +945,12 @@
|
|
815 |
} else {
|
816 |
path.setAttribute('fill', 'red');
|
817 |
}
|
818 |
-
|
819 |
// Optionnel : ajout d'un survol ou d'un clic pour modifier l'attribut
|
820 |
// path.addEventListener('click', () => {
|
821 |
// // Ex: toggler la valeur Yes/No puis changer la couleur
|
822 |
// });
|
823 |
-
|
824 |
svgContainer.appendChild(path);
|
825 |
}
|
826 |
});
|
|
|
16 |
<div class="profile-text">
|
17 |
<h2>Donald J. Trump</h2>
|
18 |
<span>@realDonaldTrump</span>
|
19 |
+
<p>45th & 47th President 🇺🇸<br/>
|
20 |
+
DonaldJTrump.com<br/>
|
21 |
+
A rejoint X en mars 2009</p>
|
|
|
|
|
22 |
</div>
|
23 |
<div class="divider"></div>
|
24 |
</div>
|
|
|
29 |
</div>
|
30 |
</div>
|
31 |
|
32 |
+
|
33 |
+
<div class="popup" id="gamePopup">
|
34 |
+
<div class="popup-header">
|
35 |
+
<span class="popup-title">Game Intro</span>
|
36 |
+
<div class="popup-controls">
|
37 |
+
<button class="control-btn minimize">−</button>
|
38 |
+
<button class="control-btn maximize">□</button>
|
39 |
+
<button class="control-btn close">×</button>
|
40 |
+
</div>
|
41 |
+
</div>
|
42 |
+
<div class="popup-content">
|
43 |
+
<iframe src="intro.html" class="intro-frame"></iframe>
|
44 |
+
<button class="popup-ok">Start Game</button>
|
45 |
+
</div>
|
46 |
+
</div>
|
47 |
+
|
48 |
+
<div class="popup" id="gameOverPopup">
|
49 |
+
<div class="popup-header">
|
50 |
+
<span class="popup-title">Game Over</span>
|
51 |
+
<div class="popup-controls">
|
52 |
+
<button class="control-btn close">×</button>
|
53 |
+
</div>
|
54 |
+
</div>
|
55 |
+
<div class="popup-content">
|
56 |
+
<img src="/images/game_over.png" alt="Game Over" class="popup-gif">
|
57 |
+
<button class="popup-ok">Try Again</button>
|
58 |
+
</div>
|
59 |
+
</div>
|
60 |
+
|
61 |
<!-- Ajout : container pour la carte SVG à droite -->
|
62 |
<div class="map-container">
|
63 |
+
<svg
|
64 |
+
id="worldMap"
|
65 |
+
xmlns="http://www.w3.org/2000/svg"
|
66 |
viewBox="0 0 2000 1200"
|
67 |
>
|
68 |
<!-- Les paths seront injectés en JavaScript -->
|
|
|
77 |
const chatWindow = document.getElementById('chatWindow');
|
78 |
const messageDiv = document.createElement('div');
|
79 |
messageDiv.className = `message ${isUser ? 'user' : 'trump'}`;
|
80 |
+
|
81 |
if (!isUser) {
|
82 |
const img = document.createElement('img');
|
83 |
img.src = '/images/donald_trump.jpg';
|
84 |
img.alt = 'Trump';
|
85 |
messageDiv.appendChild(img);
|
86 |
}
|
87 |
+
|
88 |
const contentDiv = document.createElement('div');
|
89 |
contentDiv.className = 'message-content';
|
90 |
contentDiv.textContent = message;
|
91 |
+
|
92 |
messageDiv.appendChild(contentDiv);
|
93 |
chatWindow.appendChild(messageDiv);
|
94 |
chatWindow.scrollTop = chatWindow.scrollHeight;
|
|
|
170 |
});
|
171 |
|
172 |
|
173 |
+
document.addEventListener('DOMContentLoaded', function() {
|
174 |
+
// Load the intro content
|
175 |
+
fetch('./intro.html')
|
176 |
+
.then(response => response.text())
|
177 |
+
.then(html => {
|
178 |
+
document.getElementById('introContent').innerHTML = html;
|
179 |
+
});
|
180 |
+
|
181 |
+
// Show popup after content is loaded
|
182 |
+
setTimeout(() => {
|
183 |
+
const popup = document.getElementById('gamePopup');
|
184 |
+
popup.style.display = 'block';
|
185 |
+
}, 2000);
|
186 |
+
|
187 |
+
// Show game over popup after 5 seconds
|
188 |
+
//setTimeout(() => {
|
189 |
+
// const gameOverPopup = document.getElementById('gameOverPopup');
|
190 |
+
// gameOverPopup.style.display = 'block';
|
191 |
+
// }, 5000);
|
192 |
+
|
193 |
+
// Initialize game popup controls
|
194 |
+
const popup = document.getElementById('gamePopup');
|
195 |
+
const minimizeBtn = popup.querySelector('.minimize');
|
196 |
+
const maximizeBtn = popup.querySelector('.maximize');
|
197 |
+
const closeBtn = popup.querySelector('.close');
|
198 |
+
const okBtn = popup.querySelector('.popup-ok');
|
199 |
+
|
200 |
+
minimizeBtn.addEventListener('click', () => {
|
201 |
+
popup.classList.add('minimized');
|
202 |
+
});
|
203 |
+
|
204 |
+
maximizeBtn.addEventListener('click', () => {
|
205 |
+
popup.classList.remove('minimized');
|
206 |
+
});
|
207 |
+
|
208 |
+
closeBtn.addEventListener('click', () => {
|
209 |
+
popup.style.display = 'none';
|
210 |
+
});
|
211 |
+
|
212 |
+
okBtn.addEventListener('click', () => {
|
213 |
+
popup.classList.add('minimized');
|
214 |
+
});
|
215 |
+
|
216 |
+
// Make the popup draggable
|
217 |
+
const header = popup.querySelector('.popup-header');
|
218 |
+
let isDragging = false;
|
219 |
+
let currentX;
|
220 |
+
let currentY;
|
221 |
+
let initialX;
|
222 |
+
let initialY;
|
223 |
+
let xOffset = 0;
|
224 |
+
let yOffset = 0;
|
225 |
+
|
226 |
+
header.addEventListener('mousedown', dragStart);
|
227 |
+
document.addEventListener('mousemove', drag);
|
228 |
+
document.addEventListener('mouseup', dragEnd);
|
229 |
+
|
230 |
+
function dragStart(e) {
|
231 |
+
initialX = e.clientX - xOffset;
|
232 |
+
initialY = e.clientY - yOffset;
|
233 |
+
|
234 |
+
if (e.target === header) {
|
235 |
+
isDragging = true;
|
236 |
+
}
|
237 |
+
}
|
238 |
+
|
239 |
+
function drag(e) {
|
240 |
+
if (isDragging) {
|
241 |
+
e.preventDefault();
|
242 |
+
currentX = e.clientX - initialX;
|
243 |
+
currentY = e.clientY - initialY;
|
244 |
+
xOffset = currentX;
|
245 |
+
yOffset = currentY;
|
246 |
+
|
247 |
+
setTranslate(currentX, currentY, popup);
|
248 |
+
}
|
249 |
+
}
|
250 |
+
|
251 |
+
function setTranslate(xPos, yPos, el) {
|
252 |
+
el.style.transform = `translate(${xPos}px, ${yPos}px)`;
|
253 |
+
}
|
254 |
+
|
255 |
+
function dragEnd() {
|
256 |
+
initialX = currentX;
|
257 |
+
initialY = currentY;
|
258 |
+
isDragging = false;
|
259 |
+
}
|
260 |
+
|
261 |
+
// Initialize game over popup controls
|
262 |
+
const gameOverPopup = document.getElementById('gameOverPopup');
|
263 |
+
const gameOverCloseBtn = gameOverPopup.querySelector('.close');
|
264 |
+
const gameOverOkBtn = gameOverPopup.querySelector('.popup-ok');
|
265 |
+
|
266 |
+
gameOverCloseBtn.addEventListener('click', () => {
|
267 |
+
location.reload(); // Reload page on close
|
268 |
+
});
|
269 |
+
|
270 |
+
gameOverOkBtn.addEventListener('click', () => {
|
271 |
+
location.reload(); // Reload page on Try Again
|
272 |
+
});
|
273 |
+
});
|
274 |
+
|
275 |
+
|
276 |
// ============================
|
277 |
// AJOUT : GESTION DE LA CARTE SVG
|
278 |
// ============================
|
|
|
945 |
} else {
|
946 |
path.setAttribute('fill', 'red');
|
947 |
}
|
948 |
+
|
949 |
// Optionnel : ajout d'un survol ou d'un clic pour modifier l'attribut
|
950 |
// path.addEventListener('click', () => {
|
951 |
// // Ex: toggler la valeur Yes/No puis changer la couleur
|
952 |
// });
|
953 |
+
|
954 |
svgContainer.appendChild(path);
|
955 |
}
|
956 |
});
|
static/intro.html
ADDED
@@ -0,0 +1,148 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<!DOCTYPE html>
|
2 |
+
<html lang="fr">
|
3 |
+
<head>
|
4 |
+
<meta charset="UTF-8">
|
5 |
+
<title>What possibly go Wrong 2025</title>
|
6 |
+
<style>
|
7 |
+
html, body {
|
8 |
+
margin: 0;
|
9 |
+
padding: 0;
|
10 |
+
height: 100%;
|
11 |
+
width: 800px;
|
12 |
+
font-family: Arial, sans-serif;
|
13 |
+
overflow: hidden;
|
14 |
+
background-color: transparent;
|
15 |
+
}
|
16 |
+
|
17 |
+
/* Image de fond qui remplit tout l'écran */
|
18 |
+
body {
|
19 |
+
background: url('/images/intro/Intro.jpg') no-repeat center center;
|
20 |
+
background-size: cover; /* ou 100% auto */
|
21 |
+
position: relative;
|
22 |
+
}
|
23 |
+
|
24 |
+
/* Conteneur du texte */
|
25 |
+
#text-container {
|
26 |
+
position: absolute;
|
27 |
+
top: 10%;
|
28 |
+
left: 50%;
|
29 |
+
transform: translateX(-50%);
|
30 |
+
width: 60%;
|
31 |
+
padding: 20px;
|
32 |
+
background-color: rgba(0, 0, 0, 0.5);
|
33 |
+
border-radius: 8px;
|
34 |
+
color: #fff;
|
35 |
+
text-align: left;
|
36 |
+
font-weight: bold;
|
37 |
+
font-size: 1.2rem;
|
38 |
+
z-index: 3; /* au-dessus des flammes si besoin */
|
39 |
+
}
|
40 |
+
|
41 |
+
/* Conteneur des flammes */
|
42 |
+
#flames {
|
43 |
+
position: absolute;
|
44 |
+
bottom: -50px; /* Move flames down a bit */
|
45 |
+
left: 0;
|
46 |
+
width: 100%;
|
47 |
+
height: 180px; /* Increase height */
|
48 |
+
background: url('/images/intro/fire3.png') repeat-x;
|
49 |
+
background-size: auto 180px; /* Match height */
|
50 |
+
animation: flameAnim 3s steps(10) infinite;
|
51 |
+
pointer-events: none;
|
52 |
+
z-index: 999;
|
53 |
+
}
|
54 |
+
|
55 |
+
@keyframes flameAnim {
|
56 |
+
100% {
|
57 |
+
background-position: -1000px 0;
|
58 |
+
}
|
59 |
+
}
|
60 |
+
</style>
|
61 |
+
</head>
|
62 |
+
|
63 |
+
<body>
|
64 |
+
<div id="text-container"></div>
|
65 |
+
<div id="flames"></div>
|
66 |
+
|
67 |
+
<script>
|
68 |
+
const lines = [
|
69 |
+
"Warning !",
|
70 |
+
"This game is a work of fiction.",
|
71 |
+
"Any resemblance to real people or events is purely coincidental.",
|
72 |
+
"",
|
73 |
+
"USA is on the edge of total colapse.",
|
74 |
+
"Borders are wide open.",
|
75 |
+
"People are eating cats and dogs.",
|
76 |
+
"Oil production? it's pratically a fairy tale now ! ",
|
77 |
+
"God sent the perfect president to save the nation.",
|
78 |
+
"",
|
79 |
+
"Welcome to What possibly go Wrong in 2025 ! "
|
80 |
+
];
|
81 |
+
|
82 |
+
const textContainer = document.getElementById('text-container');
|
83 |
+
|
84 |
+
let lineIndex = 0; // Indice de la ligne en cours
|
85 |
+
let charIndex = 0; // Indice du caractère en cours dans la ligne
|
86 |
+
let currentLineElem; // Élement HTML pour la ligne en cours (si non vide)
|
87 |
+
|
88 |
+
function typeWriter() {
|
89 |
+
// Si on a traité toutes les lignes, on arrête
|
90 |
+
if (lineIndex >= lines.length) {
|
91 |
+
return;
|
92 |
+
}
|
93 |
+
|
94 |
+
const currentLine = lines[lineIndex];
|
95 |
+
|
96 |
+
// -- 1) Gérer la ligne vide ("") --
|
97 |
+
if (currentLine === "") {
|
98 |
+
// On affiche un saut de ligne
|
99 |
+
textContainer.appendChild(document.createElement('br'));
|
100 |
+
|
101 |
+
// Après 2 secondes, on efface le texte et on passe à la suite
|
102 |
+
// setTimeout(() => {
|
103 |
+
// textContainer.innerHTML = "";
|
104 |
+
// lineIndex++;
|
105 |
+
// charIndex = 0;
|
106 |
+
// typeWriter(); // relance l'affichage de la ligne suivante
|
107 |
+
// }, 3000);
|
108 |
+
|
109 |
+
lineIndex++;
|
110 |
+
charIndex = 0;
|
111 |
+
typeWriter(); // relance l'affichage de la ligne suivante
|
112 |
+
|
113 |
+
// On quitte immédiatement la fonction pour éviter tout conflit de setTimeout
|
114 |
+
return;
|
115 |
+
}
|
116 |
+
|
117 |
+
// -- 2) Si la ligne n'est pas vide, affichage "lettre par lettre" --
|
118 |
+
if (charIndex === 0) {
|
119 |
+
// On crée un nouvel élément pour la nouvelle ligne
|
120 |
+
currentLineElem = document.createElement('div');
|
121 |
+
textContainer.appendChild(currentLineElem);
|
122 |
+
}
|
123 |
+
|
124 |
+
// Ajout du caractère suivant
|
125 |
+
currentLineElem.textContent += currentLine.charAt(charIndex);
|
126 |
+
charIndex++;
|
127 |
+
|
128 |
+
// S'il reste des caractères à afficher dans la ligne
|
129 |
+
if (charIndex < currentLine.length) {
|
130 |
+
setTimeout(typeWriter, 30);
|
131 |
+
} else {
|
132 |
+
// Ligne terminée : on passe à la ligne suivante
|
133 |
+
lineIndex++;
|
134 |
+
charIndex = 0;
|
135 |
+
currentLineElem = null;
|
136 |
+
|
137 |
+
// Petite pause avant d'attaquer la prochaine ligne
|
138 |
+
setTimeout(typeWriter, 25);
|
139 |
+
}
|
140 |
+
}
|
141 |
+
|
142 |
+
// On démarre le « typewriter »
|
143 |
+
typeWriter();
|
144 |
+
</script>
|
145 |
+
</body>
|
146 |
+
|
147 |
+
|
148 |
+
</html>
|
static/styles.css
CHANGED
@@ -1,212 +1,362 @@
|
|
1 |
-
* {
|
2 |
-
|
3 |
-
|
4 |
-
|
5 |
-
}
|
6 |
-
|
7 |
-
body {
|
8 |
-
|
9 |
-
|
10 |
-
|
11 |
-
|
12 |
-
}
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
21 |
-
|
22 |
-
|
23 |
-
|
24 |
-
|
25 |
-
|
26 |
-
|
27 |
-
|
28 |
-
|
29 |
-
|
30 |
-
|
31 |
-
|
32 |
-
|
33 |
-
|
34 |
-
|
35 |
-
}
|
36 |
-
|
37 |
-
.chatbot {
|
38 |
-
|
39 |
-
|
40 |
-
|
41 |
-
|
42 |
-
|
43 |
-
|
44 |
-
|
45 |
-
|
46 |
-
|
47 |
-
|
48 |
-
|
49 |
-
|
50 |
-
|
51 |
-
|
52 |
-
|
53 |
-
|
54 |
-
|
55 |
-
|
56 |
-
|
57 |
-
|
58 |
-
|
59 |
-
|
60 |
-
|
61 |
-
}
|
62 |
-
|
63 |
-
.
|
64 |
-
|
65 |
-
|
66 |
-
|
67 |
-
|
68 |
-
|
69 |
-
|
70 |
-
|
71 |
-
|
72 |
-
|
73 |
-
|
74 |
-
|
75 |
-
|
76 |
-
|
77 |
-
|
78 |
-
|
79 |
-
|
80 |
-
|
81 |
-
|
82 |
-
|
83 |
-
|
84 |
-
}
|
85 |
-
|
86 |
-
.message
|
87 |
-
|
88 |
-
|
89 |
-
|
90 |
-
|
91 |
-
|
92 |
-
|
93 |
-
|
94 |
-
|
95 |
-
|
96 |
-
|
97 |
-
|
98 |
-
|
99 |
-
|
100 |
-
|
101 |
-
|
102 |
-
|
103 |
-
|
104 |
-
|
105 |
-
|
106 |
-
|
107 |
-
|
108 |
-
}
|
109 |
-
|
110 |
-
.chatbot-input {
|
111 |
-
|
112 |
-
|
113 |
-
|
114 |
-
|
115 |
-
|
116 |
-
|
117 |
-
|
118 |
-
|
119 |
-
|
120 |
-
|
121 |
-
|
122 |
-
|
123 |
-
|
124 |
-
|
125 |
-
|
126 |
-
|
127 |
-
|
128 |
-
|
129 |
-
|
130 |
-
|
131 |
-
|
132 |
-
|
133 |
-
|
134 |
-
|
135 |
-
|
136 |
-
|
137 |
-
|
138 |
-
|
139 |
-
|
140 |
-
|
141 |
-
|
142 |
-
|
143 |
-
|
144 |
-
|
145 |
-
|
146 |
-
|
147 |
-
|
148 |
-
|
149 |
-
|
150 |
-
|
151 |
-
|
152 |
-
|
153 |
-
|
154 |
-
}
|
155 |
-
|
156 |
-
.profile-
|
157 |
-
|
158 |
-
|
159 |
-
|
160 |
-
}
|
161 |
-
|
162 |
-
.profile-
|
163 |
-
|
164 |
-
|
165 |
-
|
166 |
-
}
|
167 |
-
|
168 |
-
.profile-
|
169 |
-
|
170 |
-
|
171 |
-
|
172 |
-
|
173 |
-
|
174 |
-
|
175 |
-
|
176 |
-
|
177 |
-
|
178 |
-
|
179 |
-
|
180 |
-
|
181 |
-
|
182 |
-
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
|
187 |
-
|
188 |
-
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
-
|
193 |
-
|
194 |
-
|
195 |
-
|
196 |
-
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
-
|
201 |
-
|
202 |
-
|
203 |
-
|
204 |
-
|
205 |
-
|
206 |
-
|
207 |
-
|
208 |
-
|
209 |
-
|
210 |
-
|
211 |
-
|
212 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
* {
|
2 |
+
margin: 0;
|
3 |
+
padding: 0;
|
4 |
+
box-sizing: border-box;
|
5 |
+
}
|
6 |
+
|
7 |
+
body {
|
8 |
+
display: flex;
|
9 |
+
font-family: Arial, sans-serif;
|
10 |
+
background-color: #000;
|
11 |
+
color: #fff;
|
12 |
+
}
|
13 |
+
|
14 |
+
.content {
|
15 |
+
flex: 1;
|
16 |
+
background-color: #fff;
|
17 |
+
}
|
18 |
+
|
19 |
+
.chatbot {
|
20 |
+
width: 50%;
|
21 |
+
height: 100vh;
|
22 |
+
border-right: 1px solid #333;
|
23 |
+
background-color: #000;
|
24 |
+
display: flex;
|
25 |
+
flex-direction: column;
|
26 |
+
}
|
27 |
+
|
28 |
+
.chatbot-header {
|
29 |
+
display: flex;
|
30 |
+
flex-direction: column;
|
31 |
+
align-items: center;
|
32 |
+
justify-content: center;
|
33 |
+
padding: 16px;
|
34 |
+
width: 100%;
|
35 |
+
}
|
36 |
+
|
37 |
+
.chatbot-header img {
|
38 |
+
width: 60px;
|
39 |
+
height: 60px;
|
40 |
+
border-radius: 50%;
|
41 |
+
margin-bottom: 10px;
|
42 |
+
text-align: center;
|
43 |
+
}
|
44 |
+
|
45 |
+
.chatbot-messages {
|
46 |
+
flex: 1;
|
47 |
+
overflow-y: scroll;
|
48 |
+
padding: 10px;
|
49 |
+
scroll-behavior: smooth;
|
50 |
+
}
|
51 |
+
|
52 |
+
.chatbot-messages::-webkit-scrollbar {
|
53 |
+
display: none;
|
54 |
+
}
|
55 |
+
|
56 |
+
.map-container {
|
57 |
+
width: 50%;
|
58 |
+
height: 100vh;
|
59 |
+
background-color: #fff; /* fond blanc */
|
60 |
+
overflow: auto; /* permet de scroller si besoin */
|
61 |
+
}
|
62 |
+
|
63 |
+
.map-container svg {
|
64 |
+
width: 100%;
|
65 |
+
height: 100%;
|
66 |
+
}
|
67 |
+
|
68 |
+
.message {
|
69 |
+
display: flex;
|
70 |
+
margin-bottom: 15px;
|
71 |
+
}
|
72 |
+
|
73 |
+
.message img {
|
74 |
+
width: 40px;
|
75 |
+
height: 40px;
|
76 |
+
border-radius: 50%;
|
77 |
+
margin-right: 10px;
|
78 |
+
}
|
79 |
+
|
80 |
+
.message-content {
|
81 |
+
border-radius: 15px;
|
82 |
+
padding: 10px;
|
83 |
+
max-width: 70%;
|
84 |
+
}
|
85 |
+
|
86 |
+
.message.trump {
|
87 |
+
justify-content: flex-start;
|
88 |
+
}
|
89 |
+
|
90 |
+
.message.trump .message-content {
|
91 |
+
background-color: #333;
|
92 |
+
color: #e1e8ed;
|
93 |
+
}
|
94 |
+
|
95 |
+
.message.user {
|
96 |
+
justify-content: flex-end;
|
97 |
+
}
|
98 |
+
|
99 |
+
.message.user .message-content {
|
100 |
+
background-color: #1da1f2;
|
101 |
+
color: #fff;
|
102 |
+
}
|
103 |
+
|
104 |
+
.chatbot-input {
|
105 |
+
border-top: 1px solid #333;
|
106 |
+
padding: 10px;
|
107 |
+
display: flex;
|
108 |
+
}
|
109 |
+
|
110 |
+
.chatbot-input input {
|
111 |
+
flex: 1;
|
112 |
+
background-color: #192734;
|
113 |
+
border: 1px solid #333;
|
114 |
+
border-radius: 20px;
|
115 |
+
padding: 10px;
|
116 |
+
color: #e1e8ed;
|
117 |
+
outline: none;
|
118 |
+
font-size: 14px;
|
119 |
+
}
|
120 |
+
|
121 |
+
.chatbot-input input::placeholder {
|
122 |
+
color: #71767b;
|
123 |
+
}
|
124 |
+
|
125 |
+
.chatbot-input button {
|
126 |
+
margin-left: 10px;
|
127 |
+
background-color: #1da1f2;
|
128 |
+
color: #fff;
|
129 |
+
border: none;
|
130 |
+
border-radius: 20px;
|
131 |
+
padding: 10px 15px;
|
132 |
+
cursor: pointer;
|
133 |
+
}
|
134 |
+
|
135 |
+
.profile-container {
|
136 |
+
display: flex;
|
137 |
+
flex-direction: column;
|
138 |
+
align-items: center;
|
139 |
+
padding: 1rem;
|
140 |
+
text-align: center;
|
141 |
+
}
|
142 |
+
|
143 |
+
.profile-image {
|
144 |
+
display: flex;
|
145 |
+
justify-content: center;
|
146 |
+
width: 100%;
|
147 |
+
margin-bottom: 12px;
|
148 |
+
}
|
149 |
+
|
150 |
+
.profile-image img {
|
151 |
+
width: 80px;
|
152 |
+
height: 80px;
|
153 |
+
border-radius: 50%;
|
154 |
+
}
|
155 |
+
|
156 |
+
.profile-name {
|
157 |
+
font-size: 1.5rem;
|
158 |
+
font-weight: bold;
|
159 |
+
margin: 0;
|
160 |
+
}
|
161 |
+
|
162 |
+
.profile-handle {
|
163 |
+
color: #536471;
|
164 |
+
font-size: 1rem;
|
165 |
+
margin-bottom: 0.5rem;
|
166 |
+
}
|
167 |
+
|
168 |
+
.profile-description {
|
169 |
+
margin: 0.5rem 0;
|
170 |
+
line-height: 1.4;
|
171 |
+
}
|
172 |
+
|
173 |
+
.profile-text {
|
174 |
+
text-align: center;
|
175 |
+
width: 100%;
|
176 |
+
}
|
177 |
+
|
178 |
+
.profile-text h2 {
|
179 |
+
margin: 0;
|
180 |
+
font-size: 18px;
|
181 |
+
font-weight: bold;
|
182 |
+
color: #ffffff;
|
183 |
+
text-align: center;
|
184 |
+
}
|
185 |
+
|
186 |
+
.profile-text span {
|
187 |
+
color: #8899a6;
|
188 |
+
font-size: 14px;
|
189 |
+
display: block;
|
190 |
+
text-align: center;
|
191 |
+
}
|
192 |
+
|
193 |
+
.profile-text p {
|
194 |
+
margin: 4px 0 0 0;
|
195 |
+
font-size: 14px;
|
196 |
+
line-height: 1.4;
|
197 |
+
color: #ffffff;
|
198 |
+
text-align: center;
|
199 |
+
}
|
200 |
+
|
201 |
+
.divider {
|
202 |
+
width: 100%;
|
203 |
+
height: 1px;
|
204 |
+
background-color: #2f3336;
|
205 |
+
margin-top: 16px;
|
206 |
+
}
|
207 |
+
|
208 |
+
.popup {
|
209 |
+
display: none;
|
210 |
+
position: fixed;
|
211 |
+
top: 50%;
|
212 |
+
left: 50%;
|
213 |
+
transform: translate(-50%, -50%);
|
214 |
+
width: 400px;
|
215 |
+
background-color: #fff3e0;
|
216 |
+
border-radius: 8px;
|
217 |
+
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.2);
|
218 |
+
z-index: 1000;
|
219 |
+
transition: all 0.3s ease;
|
220 |
+
}
|
221 |
+
|
222 |
+
.popup.minimized {
|
223 |
+
top: unset;
|
224 |
+
bottom: 20px;
|
225 |
+
right: 20px;
|
226 |
+
left: unset;
|
227 |
+
transform: none;
|
228 |
+
width: 200px;
|
229 |
+
height: 32px;
|
230 |
+
overflow: hidden;
|
231 |
+
background-color: #1da1f2;
|
232 |
+
}
|
233 |
+
|
234 |
+
.popup.minimized .popup-content {
|
235 |
+
display: none;
|
236 |
+
}
|
237 |
+
|
238 |
+
.popup.minimized .popup-header {
|
239 |
+
padding: 4px 8px;
|
240 |
+
height: 32px;
|
241 |
+
}
|
242 |
+
|
243 |
+
.popup-header {
|
244 |
+
background-color: #1da1f2;
|
245 |
+
color: white;
|
246 |
+
padding: 8px 12px;
|
247 |
+
display: flex;
|
248 |
+
justify-content: space-between;
|
249 |
+
align-items: center;
|
250 |
+
border-radius: 8px 8px 0 0;
|
251 |
+
cursor: move;
|
252 |
+
}
|
253 |
+
|
254 |
+
.popup-controls {
|
255 |
+
display: flex;
|
256 |
+
gap: 5px;
|
257 |
+
}
|
258 |
+
|
259 |
+
.control-btn {
|
260 |
+
background: none;
|
261 |
+
border: none;
|
262 |
+
color: white;
|
263 |
+
cursor: pointer;
|
264 |
+
width: 24px;
|
265 |
+
height: 24px;
|
266 |
+
display: flex;
|
267 |
+
align-items: center;
|
268 |
+
justify-content: center;
|
269 |
+
border-radius: 4px;
|
270 |
+
}
|
271 |
+
|
272 |
+
.control-btn:hover {
|
273 |
+
background-color: rgba(255, 255, 255, 0.2);
|
274 |
+
}
|
275 |
+
|
276 |
+
.popup-content {
|
277 |
+
padding: 20px;
|
278 |
+
display: flex;
|
279 |
+
flex-direction: column;
|
280 |
+
align-items: center;
|
281 |
+
gap: 15px;
|
282 |
+
color: #000;
|
283 |
+
}
|
284 |
+
|
285 |
+
.popup-gif {
|
286 |
+
max-width: 100%;
|
287 |
+
height: auto;
|
288 |
+
}
|
289 |
+
|
290 |
+
.popup-ok {
|
291 |
+
background-color: #1da1f2;
|
292 |
+
color: white;
|
293 |
+
border: none;
|
294 |
+
padding: 8px 24px;
|
295 |
+
border-radius: 20px;
|
296 |
+
cursor: pointer;
|
297 |
+
font-size: 14px;
|
298 |
+
}
|
299 |
+
|
300 |
+
.popup-ok:hover {
|
301 |
+
background-color: #1a91da;
|
302 |
+
}
|
303 |
+
|
304 |
+
#gameOverPopup {
|
305 |
+
width: fit-content;
|
306 |
+
}
|
307 |
+
|
308 |
+
#gameOverPopup .popup-content {
|
309 |
+
padding: 0;
|
310 |
+
gap: 5px;
|
311 |
+
}
|
312 |
+
|
313 |
+
#gameOverPopup .popup-gif {
|
314 |
+
display: block;
|
315 |
+
width: 600px;
|
316 |
+
height: 300px;
|
317 |
+
margin: 0;
|
318 |
+
}
|
319 |
+
|
320 |
+
#gameOverPopup .popup-header {
|
321 |
+
padding: 5px 10px;
|
322 |
+
}
|
323 |
+
|
324 |
+
#gameOverPopup .popup-ok {
|
325 |
+
margin: 5px 0;
|
326 |
+
}
|
327 |
+
|
328 |
+
.intro-frame {
|
329 |
+
width: 800px;
|
330 |
+
height: 650px;
|
331 |
+
border: none;
|
332 |
+
overflow: hidden;
|
333 |
+
background-color: transparent;
|
334 |
+
margin: 0;
|
335 |
+
padding: 0;
|
336 |
+
}
|
337 |
+
|
338 |
+
#gamePopup {
|
339 |
+
width: auto;
|
340 |
+
background-color: transparent;
|
341 |
+
padding: 0;
|
342 |
+
}
|
343 |
+
|
344 |
+
#gamePopup .popup-content {
|
345 |
+
padding: 0;
|
346 |
+
position: relative;
|
347 |
+
}
|
348 |
+
|
349 |
+
#gamePopup .popup-ok {
|
350 |
+
position: absolute;
|
351 |
+
bottom: 200px;
|
352 |
+
left: 50%;
|
353 |
+
transform: translateX(-50%);
|
354 |
+
z-index: 1000;
|
355 |
+
background-color: rgba(29, 161, 242, 0.8);
|
356 |
+
padding: 12px 30px;
|
357 |
+
font-size: 16px;
|
358 |
+
}
|
359 |
+
|
360 |
+
#gamePopup .popup-ok:hover {
|
361 |
+
background-color: rgba(29, 161, 242, 1);
|
362 |
+
}
|