Advertisement
Guest User

Untitled

a guest
Jan 26th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 14.27 KB | None | 0 0
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import java.util.*;
  4. import javax.swing.*;
  5. import javax.swing.Timer;
  6.  
  7. public class Driver extends JPanel implements ActionListener, KeyListener, MouseListener, MouseMotionListener {
  8.  
  9. // size of jframe
  10. int screen_width = 340 * 4;
  11. int screen_height = 600 / 2 * 4;
  12. int[][] Map = new int[25][21];
  13. Grass[] bush = new Grass[80];
  14. Crate[] crates = new Crate[80];
  15. // [0] and [1] are safe1s, [2] [3] and [4] are allies, [5] [6] [7] are enemies
  16. ArrayList<Bullet> bullets = new ArrayList<Bullet>();
  17. Shelly shelly0 = new Shelly(0, new int[] { 620, 1650 });
  18. Shelly shelly1 = new Shelly(1, new int[] { 620, -200 });
  19. Bea bea0 = new Bea(0, new int[] { 815, 1650 });
  20. Bea bea1 = new Bea(1, new int[] { 815, -200 });
  21. Colt colt0 = new Colt(0, new int[] { 365, 1650 });
  22. Colt colt1 = new Colt(1, new int[] { 365, -200 });
  23. Safe safe0 = new Safe(0, new int[] { 600, 1125 });
  24. Safe safe1 = new Safe(1, new int[] { 600, 325 });
  25. int fps = 60;
  26. int camY = -700;
  27.  
  28. int player = 0;
  29.  
  30. boolean keys[] = new boolean[256];
  31.  
  32. @Override
  33. public void paint(Graphics g) {
  34. super.paintComponent(g);
  35.  
  36. // background
  37. g.setColor(new Color(100, 231, 100));
  38. g.fillRect(0, 0, 2000, 1600);
  39. // camera
  40. if (safe1.getHP() > 0 && safe0.getHP() > 0) {
  41. // healthbar safe0
  42. g.setColor(new Color(0, 0, 255));
  43. g.fillRect(safe0.getX() + 5, safe0.getY() - 25, (int) (128 * safe0.HP / safe0.maxHP), 10);
  44. g.drawString("Protect Me!", safe0.getX() + 40, safe0.getY() - 30);
  45. // healthbar safe1
  46. g.setColor(new Color(255, 0, 0));
  47. Font myFont = new Font("Serif", Font.BOLD, 30);
  48. g.fillRect(safe1.getX()-550 , safe1.getY() - 290, (int) (256 * safe1.HP / safe1.maxHP), 30);
  49. g.setColor(new Color(0,0,0));
  50. g.setFont(myFont);
  51. g.drawString("Enemy Safe HP", safe1.getX()-520 , safe1.getY() - 265);
  52. g.translate(0, camY);
  53. Font plain = new Font("Serif", Font.PLAIN, 15);
  54. g.setFont(plain);
  55. }
  56.  
  57.  
  58. // healthbar bea0
  59. g.setColor(new Color(0, 0, 255));
  60. g.fillRect(bea0.getX() + 30, bea0.getY() - 25, (int) (66 * bea0.HP / bea0.maxHP), 10);
  61. g.drawString("You", bea0.getX() + 30, bea0.getY() - 30);
  62. // healthbar bea1
  63. g.setColor(new Color(255, 0, 0));
  64. g.fillRect(bea1.getX() + 30, bea1.getY() - 25, (int) (66 * bea1.HP / bea1.maxHP), 10);
  65. g.drawString("Bot5", bea1.getX() + 30, bea1.getY() - 30);
  66. // healthbar colt0
  67. g.setColor(new Color(0, 0, 255));
  68. g.fillRect(colt0.getX() + 30, colt0.getY() - 25, (int) (66 * colt0.HP / colt0.maxHP), 10);
  69. g.drawString("Bot1", colt0.getX() + 30, colt0.getY() - 30);
  70. // healthbar colt1
  71. g.setColor(new Color(255, 0, 0));
  72. g.fillRect(colt1.getX() + 30, colt1.getY() - 25, (int) (66 * colt1.HP / colt1.maxHP), 10);
  73. g.drawString("Bot3", colt1.getX() + 30, colt1.getY() - 30);
  74. // healthbar shelly0
  75. g.setColor(new Color(0, 0, 255));
  76. g.fillRect(shelly0.getX() + 8, shelly0.getY() - 25, (int) (66 * shelly0.HP / shelly0.maxHP), 10);
  77. g.drawString("Bot2", shelly0.getX() + 8, shelly0.getY() - 30);
  78. // healthbar shelly1
  79. g.setColor(new Color(255, 0, 0));
  80. g.fillRect(shelly1.getX() + 8, shelly1.getY() - 25, (int) (66 * shelly1.HP / shelly1.maxHP), 10);
  81. g.drawString("Bot4", shelly1.getX() + 8, shelly1.getY() - 30);
  82. // healthbar safe0
  83. g.setColor(new Color(0, 0, 255));
  84. g.fillRect(safe0.getX() + 5, safe0.getY() - 25, (int) (128 * safe0.HP / safe0.maxHP), 10);
  85. g.drawString("Protect Me!", safe0.getX() + 40, safe0.getY() - 30);
  86. // healthbar safe1
  87. g.setColor(new Color(255, 0, 0));
  88. g.fillRect(safe1.getX() + 5, safe1.getY() - 25, (int) (128 * safe1.HP / safe1.maxHP), 10);
  89. g.drawString("Shoot Me!", safe1.getX() + 40, safe1.getY() - 30);
  90.  
  91. // ammo bar for bea0
  92. g.setColor(new Color(255, 215, 0));
  93. g.fillRect(bea0.getX() + 30, bea0.getY() - 10, (int) (66 * bea0.ammo / 3), 10);
  94. //draw bullets
  95. for (int i = 0; i < bullets.size(); i++) {
  96. // System.out.println("bullet " +i);
  97. Bullet b = bullets.get(i);
  98. if (b.team == 0) {
  99. g.setColor(new Color(0, 0, 255));
  100. } else {
  101. g.setColor(new Color(255, 0, 0));
  102. }
  103. g.fillOval(b.getX(), b.getY(), 10, 10);
  104. }
  105.  
  106. // draw brawlers
  107. safe1.paint(g);
  108. safe0.paint(g);
  109.  
  110. shelly1.paint(g);
  111. shelly0.paint(g);
  112.  
  113. colt1.paint(g);
  114. colt0.paint(g);
  115.  
  116. bea1.paint(g);
  117. bea0.paint(g);
  118.  
  119.  
  120.  
  121. //draw bushes
  122. for (int i = 0; i < bush.length; i++) {
  123. if (bush[i] != null) {
  124. bush[i].paint(g);
  125. }
  126. }
  127. // draw crates
  128. for (int i = 0; i < crates.length; i++) {
  129. if (crates[i] != null) {
  130. crates[i].paint(g);
  131. }
  132. }
  133. //check win/loss
  134. if (safe1.getHP() <= 0) {
  135. g.setColor(new Color(100, 231, 100));
  136. g.fillRect(0, 0, screen_width, screen_height);
  137. g.setColor(new Color(0, 0, 0));
  138. Font myFont = new Font("Serif", Font.BOLD, 100);
  139. g.setFont(myFont);
  140. g.drawString("YOUwU WIN!!", 325, 400);
  141. g.drawString("GG UwU beat bots", 275, 600);
  142. Font notMyFont = new Font("Serif", Font.BOLD, 50);
  143. g.setFont(notMyFont);
  144. g.drawString("*insert happy noises here*", 380, 800);
  145. g.drawString(".-.", 650, 875);
  146. }
  147.  
  148. if (safe0.getHP() <= 0) {
  149. g.setColor(new Color(100, 231, 100));
  150. g.fillRect(0, 0, screen_width, screen_height);
  151. g.setColor(new Color(0, 0, 0));
  152. Font myFont = new Font("Serif", Font.BOLD, 80);
  153. g.setFont(myFont);
  154. g.drawString("YOU ARE COMPLETE TRASH", 100, 400);
  155. g.drawString("GG MEANS GIT GUD", 250, 600);
  156. Font notMyFont = new Font("Serif", Font.BOLD, 50);
  157. g.setFont(notMyFont);
  158. g.drawString("U LOST TO SCUFFED BOTS", 325, 800);
  159. g.drawString("BRUH U TRASH", 450, 875);
  160. }
  161.  
  162. }
  163.  
  164.  
  165. public void update() {
  166. // bullet Movement
  167. for (int i = 0; i < bullets.size(); i++) {
  168. Bullet b = bullets.get(i);
  169. if (b.bulletTimer == 0) {
  170. bullets.remove(i);
  171. }
  172. b.move();
  173. Brawler[] tars = new Brawler[6];
  174. tars[0] = shelly0;
  175. tars[1] = shelly1;
  176. tars[2] = colt0;
  177. tars[3] = colt1;
  178. tars[5] = bea1;
  179. tars[4] = bea0;
  180. // brawler collision
  181. for (int j = 0; j < tars.length; j++) {
  182. Brawler tar = tars[j];
  183. if (b.team == tar.team) {
  184. continue;
  185. }
  186. if (b.collided(tar.getX() + 59, tar.getY() + 62, 46)) {
  187. tar.takeDamage(b.getDamage(), b.getEffect());
  188. b.onHit(tar);
  189. bullets.remove(i);
  190. i--;
  191. break;
  192. }
  193. }
  194. // safe
  195. if (b.team == 1) {
  196. // safe hitbox is basically perfect at 64 64 64
  197. if (b.collided(safe0.getX() + 64, safe0.getY() + 64, 64)) {
  198. safe0.takeDamage(b.getDamage(), b.getEffect());
  199. b.onHit(safe0);
  200. bullets.remove(i);
  201. i--;
  202. continue;
  203. }
  204. }
  205. if (b.team == 0) {
  206. // safe hitbox is basically perfect at 64 64 64
  207. if (b.collided(safe1.getX() + 64, safe1.getY() + 64, 64)) {
  208. safe1.takeDamage(b.getDamage(), b.getEffect());
  209. b.onHit(safe1);
  210. bullets.remove(i);
  211. i--;
  212. continue;
  213. }
  214. }
  215. // crates
  216. for (int k = 0; k < crates.length; k++) {
  217. if (crates[k] == null)
  218. continue;
  219. if (b.collided(crates[k].getX() + 16, crates[k].getY() + 16, 32)) {
  220. bullets.remove(i);
  221. i--;
  222. break;
  223. }
  224. }
  225. }
  226.  
  227. // brawler update
  228. Brawler[] brls = new Brawler[6];
  229. brls[0] = shelly0;
  230. brls[1] = shelly1;
  231. brls[2] = colt0;
  232. brls[3] = colt1;
  233. brls[4] = bea0;
  234. brls[5] = bea1;
  235.  
  236. int[] targets = new int[6];
  237. int dist = 0;
  238. for (int j = 0; j < brls.length; j++) {
  239. for (int i = 0; i < brls.length; i++) {
  240. if (brls[i].team != brls[j].team) {
  241. if ((brls[j].getX()-brls[i].getX())*(brls[j].getX()-brls[i].getX())+(brls[j].getY()-brls[i].getY())*(brls[j].getY()-brls[i].getY())>dist) {
  242. dist = (brls[0].getX()-brls[i].getX())*(brls[j].getX()-brls[i].getX())+(brls[j].getY()-brls[i].getY())*(brls[j].getY()-brls[i].getY());
  243. targets[j] = i;
  244. }
  245. }
  246. }
  247. }
  248. //System.out.println(targets[1]);
  249. shelly0.constrainMove(crates);
  250. shelly0.update(fps, bullets);
  251. shelly0.runBot(bullets, brls[1],brls[3],brls[5], safe1);
  252.  
  253.  
  254. shelly1.constrainMove(crates);
  255. shelly1.update(fps, bullets);
  256. shelly1.runBot(bullets, brls[0],brls[2],brls[4], safe0);
  257.  
  258.  
  259. colt0.constrainMove(crates);
  260. colt0.update(fps, bullets);
  261. colt0.runBot(bullets, brls[1],brls[3],brls[5], safe1);
  262.  
  263. colt1.constrainMove(crates);
  264. colt1.update(fps, bullets);
  265. colt1.runBot(bullets, brls[0],brls[2],brls[4], safe0);
  266.  
  267. bea0.constrainMove(crates);
  268. bea0.update(fps, bullets);
  269.  
  270. //camY -= bea0.vy;
  271. camY = 425-bea0.getY();
  272.  
  273. bea1.constrainMove(crates);
  274. bea1.update(fps, bullets);
  275. bea1.runBot(bullets, brls[0],brls[2],brls[4], safe0);
  276.  
  277. // movement
  278. if (keys[68]) {
  279. bea0.controlMove(2, -1);
  280. } else if (keys[65]) {
  281. bea0.controlMove(1, -1);
  282. } else {
  283. bea0.controlMove(0, -1);
  284. }
  285.  
  286. if (keys[87]) {
  287. bea0.controlMove(-1, 1);
  288. } else if (keys[83]) {
  289. bea0.controlMove(-1, 2);
  290. } else {
  291. bea0.controlMove(-1, 0);
  292. }
  293. }
  294.  
  295. @Override
  296. public void actionPerformed(ActionEvent arg0) {
  297. // bea.move();
  298. // colt.shotPattern(bullets);
  299.  
  300. update();
  301. repaint();
  302. }
  303.  
  304. public static void main(String[] args) {
  305. Driver d = new Driver();
  306.  
  307. }
  308.  
  309. public Driver() {
  310. JFrame f = new JFrame();
  311. f.setTitle("Brawlstars but scuffed");
  312. f.setSize(screen_width, screen_height);
  313. f.setBackground(Color.BLACK);
  314. f.setResizable(false);
  315. f.addKeyListener(this);
  316. f.addMouseMotionListener(this);
  317. f.addMouseListener(this);
  318. // constructor
  319. // initialize structures
  320.  
  321. f.add(this);
  322.  
  323. Timer t = new Timer(17, this);
  324. t.start();
  325. f.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
  326. f.setVisible(true);
  327.  
  328. // images
  329. // Map = 0 means no image
  330. // Map = 1 means grass
  331. // Map = 2 means crates
  332. for (int i = 0; i < Map.length; i++) {
  333. for (int k = 0; k < Map[0].length; k++) {
  334. Map[i][k] = 0;
  335. }
  336. }
  337.  
  338. // upper left hand square of grass
  339. Map[1][1] = 1;
  340. Map[2][1] = 1;
  341. Map[1][2] = 1;
  342. Map[2][2] = 1;
  343.  
  344. // upper right hand square of grass
  345. Map[1][18] = 1;
  346. Map[1][19] = 1;
  347. Map[2][18] = 1;
  348. Map[2][19] = 1;
  349.  
  350. // upper middle grass
  351. /*
  352. * Map[1][8] = 1; Map[1][9] = 1; Map[1][10] = 1; Map[1][11] = 1; Map[1][12] = 1;
  353. */
  354.  
  355. // middle left hand side of grass
  356. Map[9][1] = 1;
  357. Map[10][1] = 1;
  358. Map[11][1] = 1;
  359. Map[11][2] = 1;
  360. Map[11][3] = 1;
  361.  
  362. Map[13][3] = 1;
  363. Map[13][2] = 1;
  364. Map[13][1] = 1;
  365. Map[14][1] = 1;
  366. Map[15][1] = 1;
  367.  
  368. // center grass
  369. Map[8][8] = 1;
  370. Map[8][9] = 1;
  371. Map[8][10] = 1;
  372. Map[8][11] = 1;
  373. Map[8][12] = 1;
  374. Map[9][8] = 1;
  375. Map[9][10] = 1;
  376. Map[9][12] = 1;
  377.  
  378. Map[15][8] = 1;
  379. Map[15][10] = 1;
  380. Map[15][12] = 1;
  381. Map[16][8] = 1;
  382. Map[16][9] = 1;
  383. Map[16][10] = 1;
  384. Map[16][11] = 1;
  385. Map[16][12] = 1;
  386.  
  387. Map[9][9] = 1;
  388. Map[9][11] = 1;
  389. Map[15][9] = 1;
  390. Map[15][11] = 1;
  391.  
  392. // middle right hand side grass
  393. Map[9][19] = 1;
  394. Map[10][19] = 1;
  395. Map[11][19] = 1;
  396. Map[11][18] = 1;
  397. Map[11][17] = 1;
  398.  
  399. Map[13][17] = 1;
  400. Map[13][18] = 1;
  401. Map[13][19] = 1;
  402. Map[14][19] = 1;
  403. Map[15][19] = 1;
  404.  
  405. // bottom left hand square of grass
  406. Map[22][1] = 1;
  407. Map[22][2] = 1;
  408. Map[23][1] = 1;
  409. Map[23][2] = 1;
  410.  
  411. // bottom right hand square of grass
  412. Map[22][18] = 1;
  413. Map[22][19] = 1;
  414. Map[23][18] = 1;
  415. Map[23][19] = 1;
  416.  
  417. // bottom middle grass
  418. /*
  419. * Map[23][8] = 1; Map[23][9] = 1; Map[23][10] = 1; Map[23][11] = 1; Map[23][12]
  420. * = 1;
  421. */
  422.  
  423. // upper center boxes
  424. // Map[2][6] = 2;
  425. /*
  426. * Map[2][7] = 2; Map[2][8] = 2; Map[2][9] = 2; Map[2][10] = 2; Map[2][11] = 2;
  427. * Map[2][12] = 2; Map[2][13] = 2;
  428. */
  429. // Map[2][14] = 2;
  430.  
  431. // left hand side crates
  432. Map[6][4] = 2;
  433. Map[6][5] = 2;
  434. Map[7][5] = 2;
  435.  
  436. // Map[8][1] = 2;
  437. // Map[8][2] = 2;
  438. Map[9][2] = 2;
  439. Map[10][2] = 2;
  440. Map[10][3] = 2;
  441.  
  442. Map[14][3] = 2;
  443. Map[14][2] = 2;
  444. Map[15][2] = 2;
  445. // Map[16][2] = 2;
  446. // Map[16][1] = 2;
  447.  
  448. Map[17][5] = 2;
  449. Map[18][5] = 2;
  450. Map[18][4] = 2;
  451.  
  452. // center crates
  453.  
  454. Map[10][8] = 2;
  455. Map[10][9] = 2;
  456. Map[10][10] = 2;
  457. Map[10][11] = 2;
  458. Map[10][12] = 2;
  459.  
  460. Map[14][8] = 2;
  461. Map[14][9] = 2;
  462. Map[14][10] = 2;
  463. Map[14][11] = 2;
  464. Map[14][12] = 2;
  465.  
  466.  
  467. // ride hand side crates
  468. Map[6][15] = 2;
  469. Map[6][16] = 2;
  470. Map[7][15] = 2;
  471.  
  472. // Map[8][19] = 2;
  473. // Map[8][18] = 2;
  474. Map[9][18] = 2;
  475. Map[10][18] = 2;
  476. Map[10][17] = 2;
  477.  
  478. Map[14][17] = 2;
  479. Map[14][18] = 2;
  480. Map[15][18] = 2;
  481. // Map[16][18] = 2;
  482. // Map[16][19] = 2;
  483.  
  484. Map[17][15] = 2;
  485. Map[18][15] = 2;
  486. Map[18][16] = 2;
  487.  
  488. // bottom middle crates
  489. // Map[22][6] = 2;
  490. /*
  491. * Map[22][7] = 2; Map[22][8] = 2; Map[22][9] = 2; Map[22][10] = 2; Map[22][11]
  492. * = 2; Map[22][12] = 2; Map[22][13] = 2;
  493. */
  494. // Map[22][14] = 2;
  495. int z = 0;
  496. int c = 0;
  497. for (int i = 0; i < 25; i++) {
  498. for (int k = 0; k < 21; k++) {
  499. if (Map[i][k] == 1) {
  500. bush[z] = new Grass(k * 64, i * 64, "bush.png");
  501. z++;
  502. }
  503. }
  504. }
  505. for (int i = 0; i < 25; i++) {
  506. for (int k = 0; k < 21; k++) {
  507. if (Map[i][k] == 2) {
  508. crates[c] = new Crate(k * 64, i * 64, "crate.png");
  509. c++;
  510. }
  511. }
  512. }
  513. // Rgoal[0] = new Redgoal(448,256-64,"redgoal.png");
  514. // Rgoal[1] = new Redgoal(448,256-64+2000,"redgoal.png");
  515.  
  516. }
  517.  
  518. Timer t;
  519. @Override
  520. public void mouseClicked(MouseEvent e) {
  521.  
  522. // bea.shoot(bullets);
  523. if (e.getButton() == MouseEvent.BUTTON1) {
  524. System.out.println("CLICK");
  525. bea0.shoot(bullets);
  526. }
  527.  
  528. }
  529. @Override
  530. public void mouseMoved(MouseEvent m) {
  531. // TODO Auto-generated method stub
  532. // bea.spin(bea.getAngle(m.getX()-2,m.getY()-20));
  533. bea0.spin(bea0.getAngle(m.getX() - 2, m.getY() - 20 - camY));
  534. // System.out.println((mouse[0]-p[0])+","+(mouse[1]-p[1]));
  535. }
  536. @Override
  537. public void keyPressed(KeyEvent e) {
  538. keys[e.getKeyCode()] = true;
  539. }
  540.  
  541. @Override
  542. public void keyReleased(KeyEvent e) {
  543. keys[e.getKeyCode()] = false;
  544. }
  545.  
  546. @Override
  547. public void keyTyped(KeyEvent e) {
  548. // TODO Auto-generated method stub
  549.  
  550. }
  551.  
  552.  
  553.  
  554. @Override
  555. public void mouseEntered(MouseEvent e) {
  556. // TODO Auto-generated method stub
  557.  
  558. }
  559.  
  560. @Override
  561. public void mouseExited(MouseEvent e) {
  562. // TODO Auto-generated method stub
  563.  
  564. }
  565.  
  566. @Override
  567. public void mousePressed(MouseEvent e) {
  568.  
  569. }
  570.  
  571. @Override
  572. public void mouseReleased(MouseEvent e) {
  573. // TODO Auto-generated method stub
  574.  
  575. }
  576.  
  577. @Override
  578. public void mouseDragged(MouseEvent arg0) {
  579.  
  580. }
  581.  
  582.  
  583.  
  584. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement