13
13
#include < glib2d.h>
14
14
15
15
16
+ // i coded this all on my own
16
17
PSP_MODULE_INFO (" agario" , 0 , 1 , 0 );
17
18
PSP_HEAP_SIZE_KB (-256 );
18
19
@@ -55,16 +56,25 @@ struct AI {
55
56
int color = 10 ;
56
57
int dir = 1 ;
57
58
int tick = 1 ;
59
+ int skin = 0 ;
60
+ g2dTexture* chosenSkin = g2dTexLoad(" cell.png" ,G2D_SWIZZLE);
58
61
};
59
62
60
63
auto main () -> int {
61
64
65
+ SceCtrlLatch latchData;
66
+
62
67
g2dTexture* bg = g2dTexLoad (" grid.png" ,G2D_SWIZZLE);
63
68
g2dTexture* title = g2dTexLoad (" title.png" ,G2D_SWIZZLE);
64
69
g2dTexture* tex = g2dTexLoad (" cell.png" ,G2D_SWIZZLE);
65
70
66
71
g2dColors color[7 ] = {RED,ORANGE,YELLOW,GREEN,BLUE,VIOLET,ROSE};
67
72
73
+ char * skins[5 ] = {" default" ," agarskin_cia.png" ," agarskin_facepunch.png" ," agarskin_tiktok.png" ," agarskin_sussy.png" };
74
+ int mySkin = 1 ;
75
+
76
+ g2dTexture* plr_skin = g2dTexLoad (skins[mySkin],G2D_SWIZZLE);
77
+
68
78
Food dots[250 ];
69
79
for (int i = 0 ; i < 250 ; i++) {
70
80
dots[i].foodX = rand () % 2000 - 90 ;
@@ -80,6 +90,10 @@ auto main() -> int {
80
90
plrs[i].tick = rand () % 20 + 1 ;
81
91
plrs[i].dir = rand () % 3 + 1 ;
82
92
plrs[i].color = rand () % 7 ;
93
+ plrs[i].skin = rand () % 4 ;
94
+ if (plrs[i].skin != 0 ){
95
+ plrs[i].chosenSkin = g2dTexLoad (skins[plrs[i].skin ],G2D_SWIZZLE);
96
+ }
83
97
}
84
98
85
99
// Virus spots[10]; // unused for now
@@ -132,6 +146,15 @@ auto main() -> int {
132
146
g2dSetCoordXY ((plrs[loop].pX - x) / (mass / 40 ) + 240 ,(plrs[loop].pY - y) / (mass / 40 ) + 132 );
133
147
g2dAdd ();
134
148
g2dEnd ();
149
+ if (plrs[loop].skin != 0 ){
150
+ // render ai skin!
151
+ g2dSetColor (WHITE);
152
+ g2dBeginRects (plrs[loop].chosenSkin );
153
+ g2dSetScaleWH (plrs[loop].score / (mass / 40 ),plrs[loop].score / (mass / 40 ));
154
+ g2dSetCoordXY ((plrs[loop].pX - x) / (mass / 40 ) + 240 ,(plrs[loop].pY - y) / (mass / 40 ) + 132 );
155
+ g2dAdd ();
156
+ g2dEnd ();
157
+ }
135
158
plrs[loop].tick ++;
136
159
if (plrs[loop].tick >= plrs[loop].score * 2 ){
137
160
plrs[loop].tick = 0 ;
@@ -157,7 +180,7 @@ auto main() -> int {
157
180
158
181
// ai eats pellets
159
182
for (int i2 = 0 ; i2 < 240 ; i2++) {
160
- if (collision ((plrs[loop].pX - x) / (mass / 40 ) + 240 ,(plrs[loop].pY - y) / (mass / 40 ) + 132 , (dots[i2].foodX - x) / (mass / 40 ) + 240 , (dots[i2].foodY - y) / (mass / 40 ) + 132 ,plrs[loop].score / (mass / 40 ),plrs[loop].score / (mass / 40 ),4 ,4 )) {
183
+ if (collision ((plrs[loop].pX - x) / (mass / 40 ) + 240 + plrs[loop]. score ,(plrs[loop].pY - y) / (mass / 40 ) + 132 + plrs[loop]. score , (dots[i2].foodX - x) / (mass / 40 ) + 240 , (dots[i2].foodY - y) / (mass / 40 ) + 132 ,plrs[loop].score / (mass / 40 ),plrs[loop].score / (mass / 40 ),4 ,4 )) {
161
184
plrs[loop].score += 10 / (plrs[loop].score / 4 );
162
185
dots[i2].foodX = rand () % 2000 - 90 ;
163
186
dots[i2].foodY = rand () % 2000 + 10 ;
@@ -166,7 +189,7 @@ auto main() -> int {
166
189
167
190
for (int i3 = 0 ; i3 < 60 ; i3++) {
168
191
// ai eat ai
169
- if (collision ((plrs[loop].pX - x) / (mass / 40 ) + 240 ,(plrs[loop].pY - y) / (mass / 40 ) + 132 , (plrs[i3].pX - x) / (mass / 40 ) + 240 , (plrs[i3].pY - y) / (mass / 40 ) + 132 ,plrs[loop].score / (mass / 40 ),plrs[loop].score / (mass / 40 ),plrs[i3].score / (mass / 40 ),plrs[i3].score / (mass / 40 ))) {
192
+ if (collision ((plrs[loop].pX - x) / (mass / 40 ) + 240 + plrs[loop]. score ,(plrs[loop].pY - y) / (mass / 40 ) + 132 + plrs[loop]. score , (plrs[i3].pX - x) / (mass / 40 ) + 240 + plrs[i3]. score , (plrs[i3].pY - y) / (mass / 40 ) + 132 + plrs[i3]. score ,plrs[loop].score / (mass / 40 ),plrs[loop].score / (mass / 40 ),plrs[i3].score / (mass / 40 ),plrs[i3].score / (mass / 40 ))) {
170
193
if (plrs[loop].score > plrs[loop1].score + 30 ) {
171
194
plrs[loop].score += (plrs[loop1].score / 4 );
172
195
plrs[i3].score = rand () % 100 + 10 ;
@@ -182,13 +205,13 @@ auto main() -> int {
182
205
}
183
206
184
207
// collision detection for player
185
- if (collision (240 + (massSize / 2 ) ,132 + (massSize / 2 ) , (plrs[loop].pX - x) / (mass / 40 ) + 240 , (plrs[loop].pY - y) / (mass / 40 ) + 132 ,massSize,massSize,plrs[loop].score / (mass / 40 ),plrs[loop].score / (mass / 40 ))) {
208
+ if (collision (240 + (massSize / 2 ) ,132 + (massSize / 2 ) , (plrs[loop].pX - x) / (mass / 40 ) + 240 + plrs[loop]. score , (plrs[loop].pY - y) / (mass / 40 ) + 132 + plrs[loop]. score ,massSize,massSize,plrs[loop].score / (mass / 40 ),plrs[loop].score / (mass / 40 ))) {
186
209
if (mass > plrs[loop].score + 30 ) {
187
210
mass += (plrs[loop].score / 4 );
188
211
plrs[loop].score = 10 ;
189
212
plrs[loop].pX = rand () % 2000 - 90 ;
190
213
plrs[loop].pY = rand () % 2000 + 10 ;
191
- } else if (plrs[loop].score > mass - 5 ) {
214
+ } else if (plrs[loop].score > mass - 15 ) {
192
215
193
216
x = 0 ;
194
217
y = 0 ;
@@ -224,6 +247,19 @@ auto main() -> int {
224
247
dir = 4 ;
225
248
}
226
249
if (ctrlData.Buttons & PSP_CTRL_CIRCLE) {
250
+ x = 0 ;
251
+ y = 0 ;
252
+ mass = 45 ;
253
+
254
+ // reset positions of all players
255
+ for (int i4 = 0 ; i4 < 100 ; i4++) {
256
+ plrs[i4].pX = rand () % 2000 - 90 ;
257
+ plrs[i4].pY = rand () % 2000 + 10 ;
258
+ plrs[i4].score = rand () % 100 + 10 ;
259
+ plrs[i4].tick = rand () % 20 + 1 ;
260
+ plrs[i4].dir = rand () % 3 + 1 ;
261
+ plrs[i4].color = rand () % 7 ;
262
+ }
227
263
state=0 ;
228
264
}
229
265
@@ -255,6 +291,18 @@ auto main() -> int {
255
291
256
292
g2dAdd ();
257
293
g2dEnd ();
294
+
295
+ // skin (added onto cell if skin is chosen)
296
+ if (mySkin != 0 ){
297
+ // apply the skin!
298
+ g2dBeginRects (plr_skin);
299
+ g2dSetColor (WHITE);
300
+ g2dSetScaleWH (massSize / (mass / 40 ),massSize / (mass / 40 ));
301
+ g2dSetCoordXY ((480 - massSize / (mass / 40 )) / 2 ,(272 - massSize / (mass / 40 )) / 2 );
302
+
303
+ g2dAdd ();
304
+ g2dEnd ();
305
+ }
258
306
259
307
g2dFlip (G2D_VSYNC);
260
308
@@ -268,6 +316,8 @@ auto main() -> int {
268
316
g2dAdd ();
269
317
g2dEnd ();
270
318
319
+ sceCtrlReadLatch (&latchData);
320
+
271
321
sceCtrlReadBufferPositive (&ctrlData, 1 );
272
322
if (ctrlData.Buttons & PSP_CTRL_START) {
273
323
state = 1 ;
@@ -276,6 +326,40 @@ auto main() -> int {
276
326
running = 0 ;
277
327
}
278
328
329
+ if (latchData.uiBreak & PSP_CTRL_TRIANGLE){
330
+ if (mySkin + 1 > (sizeof (skins)/sizeof (*skins))-1 ) {
331
+ mySkin = 0 ;
332
+ } else {
333
+ mySkin++;
334
+ }
335
+ if (mySkin != 0 ){
336
+ plr_skin = g2dTexLoad (skins[mySkin],G2D_SWIZZLE);
337
+ }
338
+ }
339
+
340
+ // cell
341
+ g2dBeginRects (tex);
342
+ g2dSetColor (RED);
343
+ g2dSetScaleWH (50 ,50 );
344
+ g2dSetCoordXY (370 ,132 );
345
+ massSize = mass / 2 ;
346
+
347
+ g2dAdd ();
348
+ g2dEnd ();
349
+
350
+ // skin (added onto cell if skin is chosen)
351
+ if (mySkin != 0 ){
352
+ // apply the skin!
353
+ g2dBeginRects (plr_skin);
354
+ g2dSetColor (WHITE);
355
+ g2dSetScaleWH (50 ,50 );
356
+ g2dSetCoordXY (370 ,132 );
357
+
358
+ g2dAdd ();
359
+ g2dEnd ();
360
+ }
361
+
362
+
279
363
g2dFlip (G2D_VSYNC);
280
364
}
281
365
0 commit comments