Используйте коллекции, качели, темы и другие знания на языке Java, чтобы написать игру Tank War.
(1) Нарисуйте принцип танков противника и США:
В рамках танкового класса есть логическая переменная типа. Используется для оценки лагеря танка. При создании объекта резервуара значение добра проходит в методе строительства класса бака. При рисовании танков, судите ценность добра и различайте цвет врага и нас;
(2) Принцип движения танка:
Событие ответа нажатия клавиши монитора записано в классе танков, контролируемые, вниз, левый и правый клавиш записаны, а переменные в восьми направлениях движения бака синтезируются. Затем соответствующие изменения значений бака координаты x и y в каждом направлении могут быть внесены для достижения движения нашего танка. Вражеские танки автоматически движутся, случайным образом циркулируя направление движения вражеского танка через случайное число и случайным образом выводит количество раз каждого движения. Комбинация двух случайных значений позволяет двигаться вражеских танков.
(3) Принцип запуска танка пули:
Благодаря мониторингу клавиатуры, после обнаружения команды Bullet-Fire, добавьте класс пули в коллекцию Bullet Class Main Class. Переложите направление ствола оружия, положение танка и лагерь резервуара в пули. В основном методе рисования краски коллекция пули будет велосипедной. Если в наборе есть пули, вытяните их. Это позволяет запустить пуль.
(4) Принцип столкновения танков, пуль и стен:
В классе стен типа типа танка, метод GetRect для получения собственного диапазона, а затем выполняйте соответствующее обнаружение столкновений каждый раз, когда нарисованы бак и пуля (существуют методы столкновения со стеной и резервуаром вне бака в резервуаре, а в пуле существуют методы столкновения со стеной и резервуаром.). Если диапазон себя и объекта, который не следует столкнуться, это означает, что два объекта сталкиваются.
(5) Принцип кровообращения танка:
Если сгустки крови столкнутся с нашим аквариумом, сгустки кровь умрут, а сгустки крови будут полностью восстановлены.
(6) Принцип воскресения танка:
После обнаружения порядка воскресения нашего танка путем мониторинга клавиатуры, если наш танк находится в мертвом состоянии, наш статус инвентаря нашего танка будет изменен на живой, а объем крови нашего танка будет восстановлен до полного здоровья.
Идеи программирования:
Идея программирования войны в танке открывает нить в основном классе и не везится на 50 миллисекунд, чтобы нарисовать метод (нарисуйте все во всем интерфейсе). Нарисованные вещи включают вражеские танки (цветовое различие), пули, стены, сгустки крови и взрывы. Таким образом, было написано несколько категорий: танки, ракетные пули, стены стен, сгустки крови и основные классы танков. В каждом классе есть метод рисования, написанный для реализации функции чертежа атрибутов этого класса. В основном классе есть событие прослушивания клавиатуры под названием «Слушание прослушивания клавиатуры этого класса танка». Благодаря мониторингу клавиатуры определяется, что соответствующее движение танка сделано, в то время как вражеский танк случайным образом движется. И каждый раз, когда обновление обновляется, различные методы столкновения вызываются для определения ситуации некоторых объектов, с которыми не следует столкнуться. Создание каждого объекта, такого как пули, состоит в том, чтобы добавить новый класс пули в коллекцию класса пуль после его запуска. При рисунке определите число в наборе для рисования. Если танк выходит за пределы или убивает танк, он будет удален в наборе. Другие категории также похожи, поэтому я не буду вдаваться в подробности.
Каждый шаг в коде имеет соответствующее объяснение.
TankClient.java
Импорт java.awt.color; импортировать java.awt.font; импорт java.awt.graphics; импорт java.awt.image; импорт java.awt.event.keyadapter; импорт java.awt.event.keyevent; импорт java.awt.event.windowadapter; import.winvent.windievent.windive.windiew java.util.arraylist; import java.util.list; import javax.swing.jframe; открытый класс TankClient Extends jframe { / ** * @param args * / image offscrennimage = null; // Двойное буферное хранение изображений памяти/*Размер игры*/public static final int game_width = 800; // интерфейс ширины Public Static Final int game_heigth = 600; // высокий интерфейсный бак mytank = новый бак (500 400, true, color.red, tank.direction.stop, это); // Наш список классов танков <ракет> ракет = новый ArrayList <ракет> (); // Сбор списков пуль <explode> exproit = new ArrayList <Explode> (); // Список сбора взрывов <NACK> TANKS = New ArrayList <Tank> (); // танковая стена Wall1 = новая стена (150,200,20,300, это); // стена 1 стена 2 = новая стена (250 500,300,20, это); // стена 2 стена 3 = новая стена (650,200,20,300, это); // стена 2 стена 4 = новая стена (250 300,300,20, это); // стена 2 стена WB = новая стена (750 550,40,40, это); // Wall2 Blood B = новая кровь (); // класс крови общедоступный статический void main (string [] args) {// todo Автогенерированный метод stub clackclient tc = new tankclient (); tc.lauchframe (); } private void lauchframe () {// todo автоматически сгенерированный метод для (int i = 0; i <10; i ++) {tanks.add (новый танк (50+40*(i+1), 50, false, color.blue, tank.direction.d, this)); } this.SetLocation (100, 100); // Окончательная координата // Окно начальный размер this.setTitle ("tankwar"); // Имя окна/*Слушание окна*/this.addwindowlistener (new windowdapter () {@override/*run after point выходит из вика*/public void windowsclose (windowevent e) {// todo Автопогнированный метод System.exit (0); // exit}}); this.addkeylistener (new Keymoniton ()); // Установить клавиатуру, чтобы прослушать это.setvisible (true); // Установить окно для отображения этого. SetReSizable (false); // Установить окно, чтобы не изменить размер this.getContentPane (). Betbackground (color.green); // Установите цвет на переднем плане окна в зеленую новую нить (New PaintThread ()). Start (); // запустить класс PaintThread Run} @Override Public Void Paint (Graphics G) {// TODO Автогенерированный метод Stub // Graphics-это класс Brush Super.paint (g); mytank.draw (g); Wall1.draw (g); Wall2.draw (g); Wall3.draw (g); Wall4.draw (g); wb.draw (g); B.Draw (G); mytank.eatblood (b); mytank.hitwall (Wall1); mytank.hitwall (Wall2); mytank.hitwall (Wall3); mytank.hitwall (Wall4); /*Cycle Bullet Collection*/ for (int i = 0; i <ракет. // Получить текущую пулю M.Hittanks (танки); // ваша собственная пуля убивает вражеский танк M.HitWall (Wall1); // пуля и стена M.HitWall (Wall2); M.HitWall (Wall3); M.HitWall (Wall4); M.Hittank (Mytank); // вражеская пуля попадает в свой собственный танк m.draw (g); // рисовать пулю} для (int i = 0; i <explore.size (); i ++) {exploit.get (i) .draw (g); // рисовать взрыв} для (int i = 0; i <tanks.size (); i ++) {tank t = tanks.get (i); t.draw (g); // рисовать вражеские танки T.hittanks (танки); T.HitWall (Wall1); // танки и стены T.HitWall (Wall2); T.HitWall (Wall3); T.HitWall (Wall4); } //g.setfont(new font ("宋体", font.bold, 20)); G.DrawString («Количество ракет:»+ракет. // Показать g.drawstring ("explode count:"+explode.size (), 10, 80); // Показать g.drawstring («Счет танков:»+nacks.size (), 10, 110); g.drawstring ("Mytank Life:"+mytank.getLife (), 10, 130); G.DrawString («Восстановление крови:», 750, 540); G.DrawString («направление движения ключа каталога; E: выпустить быстрое движение кровь», 10, 590); G.DrawString ("Z: запуск Dongfeng-31; A: запуск Dongfeng-41;", 10, 570); G.DrawString ("F2: Воскресение; F3: Воскресение противника (до 20)", 10, 550); G.DrawString ("r: RESTORE; Q: полная крови", 10, 530); } @Override /*Repaint-> update-> paint* / public void update (Graphics g) {// todo автоматически сгенерированный метод Super.update (g); if (OffScrennimage == null) offscrennimage = this.createimage (game_width, game_heigth); Graphics goffscrenn = offscrennimage.getgraphics (); // Установите цвет кисти памяти на передний план цвет изображения цвет C = goffscrenn.getColor (); // Сначала сохранить цвет переднего плана, goffscrenn.setcolor (color.green); // Установить цвет кисти памяти на зеленый goffscrenn.fillrect (0, 0, game_width, game_heigth); // рисовать изображение как размер размера игры goffscrenn.setcolor (c); // восстановить цвет g.drawimage (OffCrennimage, 0, 0, null); // Нарисуйте сохраненное изображение на интерфейсной краске (Goffscrenn); // Вызовите щетку памяти, чтобы покрасить} Частный класс Paintthread реализует runnable {@override public void run () {// todo автоматическое сгенерированное метод, while (true) {Repaint (); // запустить заказ Repaint-> Update-> Paint Try {thread.sleep (50); // Обновить экран каждые 50 миллисекунд} Catch (Exception e) {e.printstackTrace (); }}}} /*Ответ клавиатуры* / Private Class KeyMoniton Extends KeyDapter { /*Нажмите ответ клавиатуры* / @Override public void keypressed (keyEvent e) {// Todo Auto Generated Method Super.Keypressed (e); mytank.keypressed (e); } /*Поднять ответ клавиатуры* / @Override public void keyreleaded (keyevent e) {// todo автоматически сгенерированный метод Super.keireled (e); mytank.kyreleaded (e); }}}Танк. Ява
Импорт java.awt.color; import java.awt.graphics; import java.awt.image; импорт java.awt.rectangle; импорт java.awt.event.keyevent; импорт java.util.list; import.util.random; import javax.swing.image.ImageIC; Координирует частный int oldx, Oldy; // Танк предыдущий координирует публичный статический финал int int = 30; // Ширина танка общедоступная статическая конечная финала int higth = 30; // Танк высокий общедоступный статический финал int xspeed = 5; // Длина направленного движения скорость общественного статического окончательного окончания inpeed = 5; // Движение Longarogue Speed Private Color Color; // Цвет танка частное логическое BL = false, bu = false, br = false, bd = false; // четыре значения управления направлением enum направление {l, lu, u, ru, r, rd, d, ld, stop}; // Движение восьми направлений состоит из четырех значений направления частного направления rire = direction.stop; // направление вывода частное направление ptdir = direction.d; // оригинальное направление Cannon Private Boolean Good; // судить лагерь Танка Private Boolean Live = True; // Судите, жив ли танк частное статическое случайное r = new random (); // Установить переменную случайное значение Частный статический int step = r.nextint (12) +3; // вражеский танк случайное движение шагов 3-14 частная жизнь int = 100; // здоровье объем частной крови BB = New Bloodbar (); // CLECK // ImageICon ICON = new ImageICon ("res // mytank.jpg"); // ImageIcon icon2 = new ImageIcon ("res // angertank.jpg"); // Image Image = icon.getImage (); // Image Image2 = icon2.getImage (); частный TankClient TC; // Основные разрешения класса открытый танк (int x, int y, boolean good, color color) {super (); this.x = x; this.y = y; this.color = color; this.wod = хорошо; } Общедоступный танк (int x, int y, boolean good, color, направление Dir, tankclient tc) {this (x, y, good, color); this.dir = dir; this.tc = tc; } /*Get Tank Health* / public int getLife () {return Life; } /*Установить танк здоровье* / public void setLife (int life) {this.life = life; } /*Получить Tank Camp* / public boolean isgood () {return good; } /*Set Tank Camp* / public void setgood (boolean good) {this.good = good; } /*Получить статус выживания танка* / public boolean islive () {return Live; } /*Установить статус выживания танка* / public void setlive (boolean live) {this.live = live; } /*Draw Tank* / public void Draw (Graphics G) {if (! Live) {if (! Good) {tc.tanks.remove (this); // Удалить в наборе, когда вражеский танк умирает // tc.tanks.add (новый танк (r.nextint (700), r.nextint (500), false, color.blue, direction.d, this.tc)); } возвращаться; } /*Сначала сохранить предыдущий цвет кисти и восстановить цвет кисти после рисования* / color c = g.getcolor (); // Получить текущий цвет кисти g.setcolor (цвет); // Установите цвет кисти в красный/*нарисовать бак*/g.filloval (x, y, with, High); /*Два метода, чтобы нарисовать танки противника и американских, используйте ранее добавленные изображения или цвета, чтобы отличить*/// if (хорошо) // g.drawimage (image, x, y, whith, высокий, нулевой); // else // g.drawimage (image2, x, y, whith, high, null); if (хорошо) bb.draw (g); // наш танк рисует кровь G.SetColor (Color.Black); /*Нарисуйте ствол оружия через направление ствола оружия*/switch (ptdir) {case l: g.drawline (x+tank.whith/2, y+tank.higth/2, x, y+ant.higth/2); перерыв; case lu: g.drawline (x+tank.whith/2, y+tank.higth/2, x, y); перерыв; Case ru: g.drawline (x+tank.whith/2, y+tank.higth/2, x+tank.whith/2, y); перерыв; Случай R: g.drawline (x+tank.whith/2, y+tank.higth/2, x+tank.whith, y+tank.higth/2); перерыв; Case RD: G.Drawline (x+nack.whith/2, y+nack.higth/2, x+tank.whith, y+tank.higth); перерыв; Случай D: G.Drawline (x+nack.whith/2, y+nack.higth/2, x, y+tank.higth); перерыв; } g.setcolor (c); // Восстановите цвет щетки перемещения (); // Перемещение}/*Мониторинг клавиатуры; Ключ*/ public void keypressed (KeyEvent e) {int key = e.getKeyCode (); // Сохранить клавиши, слушанные клавиатурой, как целые числа/*Клавиатура мобильный бак*/switch (key) {/*щедрости*/case keyevent.vk_up: bu = true; перерыв; case keyevent.vk_down: bd = true; перерыв; case keyevent.vk_right: br = true; перерыв; case keyevent.vk_left: bl = true; перерыв; } } /*Мониторинг клавиатуры; Поднимите ключ*/ public void keyreleadued (keyevent e) {int key = e.getKeyCode (); // Сохранить клавиши, слушанные клавиатурой как целые числа/*Перемещение клавиатуры*/switch (key) {case keyevent.vk_up: bu = false; перерыв; case keyevent.vk_down: bd = false; перерыв; case keyevent.vk_right: br = false; перерыв; case keyevent.vk_left: bl = false; перерыв; case keyevent.vk_z: // одиночная пуля if (live) fire (); перерыв; case keyevent.vk_f2: // Наше воскресение if (! this.live) {this.live = true; this.setLife (100); } перерыв; case keyevent.vk_f3: // egeresic resurrection fuhuo (); перерыв; case keyevent.vk_a: // Invincible ракетная суперфайр (); перерыв; case keyevent.vk_q: // recover if (this.live) this.life = 100; перерыв; case keyEvent.vk_e: // освободить сгустку крови tc.b.fh (); перерыв; /*Восстановить клавишу позиции*/ case keyevent.vk_r: x = 50; y = 50; перерыв; } // направление композиции}/*направление движения композиции*/void иначе if (bl && bu &&! br &&! bd) dir = direction.lu; else if (! bl && bu &&! bd) dir = direction.u; иначе if (! bl && bu && br &&! bd) dir = direction.ru; иначе if (! bl &&! bu && br &&! bd) dir = direction.r; else if (! bl &&! bu && br && bd) dir = direction.rd; иначе if (! bl &&! bu &&! br && bd) dir = direction.d; иначе if (! bl &&! bu &&! br && bd) dir = direction.ld; else if (! bl &&! bu &&! bd) dir = direction.stop; } void move () {// перемещение/*Запишите положение предыдущего шага*/oldx = x; старый = y; Switch (dir) {case L: x- = xspeed; перерыв; case lu: x- = xspeed; y- = yspeed; перерыв; Случай u: y- = yspeed; перерыв; case ru: x+= xspeed; y- = yspeed; перерыв; Случай R: x+= xspeed; перерыв; Case RD: x+= xspeed; y+= yspeed; перерыв; Случай D: y+= yspeed; перерыв; Case LD: x- = xspeed; y+= yspeed; перерыв; Case LD: x- = xspeed; y+= yspeed; перерыв; Стоп: перерыв; } /*Судья Танк Движение за пределы (граница игры)* / if (x <5) x = 5; if (y <25) y = 25; if (x+with> tc.game_width-5) x = tc.game_width-whith-5; if (y+higth> tc.game_heigth-5) y = tc.game_heigth-higth-5; if (dir! = direction.stop) // Если бак не является неподвижным, измените направление ствола ptdir = dir; /*Вражеский танк автоматически движется*/ if (! Good) {направление [] dirs = direction.values (); // Установить переменную направления на массив if (step == 0) {step = r.nextint (12) +3; // случайное движение int randomnumber = r.nextint (dirs.length); // Случайное направление движения Dir = dirs [RandomNumber]; } шаг--; if (r.nextint (40)> 30) this.fire (); // Слушаются ли снаряды случайным образом}}/*Воскресение танка противника*/public void fuhuo () {if (tc.tanks.size () <20) while (true) {int x = r.nextint (700); int y = r.nextint (500); Бак t = новый бак (x, y, false, color.blue, direction.d, tc); /*Если танк совпадает со стеной, положением повторного воздействия до тех пор, пока он не перекрывает новый резервуар, не будет добавлен в набор*/ if (t.getRect (). Recesects (tc.wall1.getrect ()) || t.getrect (). Recesects (tc.wall2.getRect () || t.getRect (). (). || t.getRect (). recsects (tc.wall4.getRect ())) {продолжить; } else {tc.tanks.add (t); перерыв; }}}/*Запуск пули*/public void Fire () {int x = this.x + with/2 - randile.whith/2; // управлять направлением пули до середины танка int y = this.y + higth/2 - ракета.higth/2; tc.missiles.add (новая ракета (Ptdir, Color, X, Y, Good, TC)); // Создать новый класс пули, чтобы присоединиться к коллекции пуль} /*Collision; Получить диапазон танка*/ public rectangle getRect () {вернуть новый прямоугольник (x, y, with, higth); } /*Предыдущая позиция шага квитанции* / private void stee () {x = oldx; y = старый; } /*Если вы попали в стену, вызовите метод пребывания и вернитесь к предыдущему шагу* / Public Boolean Hitwall (Wall w) {if (this.live && this.getRect (). Recsects (w.getRect ())) {this.stay (); вернуть истину; } вернуть false; } /*Событие столкновения танка* / public boolean hittanks (список <tank> nacks) {for (int i = 0; i <tanks.size (); i ++) {tank t = tanks.get (i); if (this! = t) {// Вы не можете столкнуться с самим собой/*Если вы столкнетесь, вернитесь в предыдущую позицию*/if (this.live && t.islive () && this.getRect (). recesects (t.getRect ())) {this.stay (); t.stay (); вернуть истину; }} вернуть false; } /*Функция излучения с направлением огня* / Публичный ракетный огонь (направление Dir) {if (! Live) return null; int x = this.x+with/2-missile.whith/2; int y = this.y+higth/2-missile.higth/2; Ракета m = новая ракета (Dir, Color, x, y, Good, this.tc); tc.missiles.add (m); возврат М; } /*Ракета Superfire* / private void superfire () {direction [] dirs = direction.values (); for (int i = 0; i <8; i ++) {fire (dirs [i]); // езда на велосипеде восемь направлений}}/*Добавлен класс сгустка крови*/Частный класс Bloodbar {/*Нарисуйте полоску крови*/public void draw (Graphics g) {color c = g.getColor (); g.setcolor (color.red); g.drawrect (x, y-10, whith, 10); int w = whith*life/100; G.FillRect (x, Y-10, W, 10); g.setcolor (c); }} /*Метод поедания крови* / public boolean eatblood (blood b) {if (this.live && b.islive () && this.isgood () && this.getrect (). recescts (b.getrect ())) {this.setLife (100); B.SetLive (false); вернуть истину; } if (this.getRect (). recsects (tc.wb.getrect ()))) this.life = 100; вернуть ложь; }}Ракета. Ява
Импорт java.awt.color; import java.awt.graphics; import java.awt.rectangle; импорт java.util.list; public Class ракета { /*Bullet Data* / tank.direction dir; // Цвет направления пули C; // Bullet Color int x, y; // Пулевая позиция Public Static Final int xspeed = 15; // длина движения скорости общественного статического окончательного окончания = 15; // длина движения скорости общественного статического окончательного финала int whith = 10; // ширина пули публичная статическая финальная финальная int higth = 10; // Bullet High Private Boolean Live = true; // судить о выживании пули частного логического блага; // судить о пуле и лагерях частного танкового клиента TC; // Основные разрешения класса публичная ракета (Tank.diverection Dir, Color C, Int X, Int Y) {super (); this.dir = dir; this.x = x; this.y = y; this.c = c; } Общественная ракета (Tank.Direction Dir, Color C, Int X, Int Y, Boolean Good, TankClient TC) {this (dir, c, x, y); this.wod = хорошо; this.tc = tc; } /*Получите выживание пули* / public boolean islive () {return Live; } /*Установить выживание пули* / public void setlive (boolean live) {this.live = live; } public void Draw (Graphics G) { /*Если пуля умирает, удалите пулю в коллекции пуль* / if (! Live) {tc.missiles.remove (this); // Удалить возврат в коллекции; } /*Сначала сохранить предыдущий цвет кисти и восстановить цвет кисти после рисования* / color d = g.getColor (); // Получить текущий цвет кисти g.setcolor (c); // Установить цвет кисти в красный/*Печать пули*/g.filloval (x, y, whith, High); g.setcolor (d); // Восстановите движение цвета кисти (); // Переместить} public void move () {/*Судить направление движения и положение танка*/switch (dir) {case l: x- = xspeed; перерыв; case lu: x- = xspeed; y- = yspeed; перерыв; Случай u: y- = yspeed; перерыв; case ru: x+= xspeed; y- = yspeed; перерыв; Случай R: x+= xspeed; перерыв; Case RD: x+= xspeed; y+= yspeed; перерыв; Случай D: y+= yspeed; перерыв; Case LD: x- = xspeed; y+= yspeed; перерыв; Стоп: перерыв; } /*Судить об исходящей ситуации пули; Если выезд, пуля умрет, удалите ее в коллекции пуль*/ if (x <0 || y <0 || x> tankclient.game_width || y> tankclient.game_heigth) live = false; } /*Столкновение; Получите диапазон пули*/ public rectangle getRect () {вернуть новый прямоугольник (x, y, with, higth); } /*Процесс столкновения между пулями и танками* /public boolean hittank (танк t) { /*Если пуля и танк находятся в том же диапазоне, пуля и бак умрут одновременно; и пуля может убить только танк противника*/if (this.live && this.getRect (). recesects (t.getRect ()) && t.islive () && this.good! T.SetLife (t.getLife ()-20); if (t.getLife () <= 0) t.setLive (false); } else {// Bad Tank t.setLive (false); // Death} this.live = false; // Bullet Death tc.explode.add (новый Explode (x, y, tc)); // Новый взрыв добавить Set return true; } вернуть false; } /*РАЗРЫВАЕТСЯ ТАНК СТАВИТ, чтобы судить о столкновении с пулеме* / public boolean hittanks (список <tank> танки) {for (int i = 0; i <tanks.size (); i ++) {if (hittank (tanks.get (i))) вернуть true; } вернуть false; } /*Процесс столкновения между пулями и стеной* / public boolean hitwall (стена w) { /*Если диапазон пуль и стены перекрывается с смертью пули* / if (this.live && this.getRect (). Recesects (w.getrect ()))) {this.live = false; // Bullet Death Return True; } вернуть false; }} Стена. Ява
Импорт java.awt.graphics; импортировать java.awt.rectangle; открытый класс Wall { /*Данные стены* / int x, y, w, h; // положение и ширина и высота частного танка -клиента TC; // Основные разрешения класса Public Wall (int x, int y, int w, int h, tankclient tc) {super (); this.x = x; this.y = y; this.w = w; this.h = h; this.tc = tc; } /*Получите область применения стены* / public rectangle getRect () {вернуть новый прямоугольник (x, y, w, h); } /*Draw Wall* / public void Draw (Graphics G) {g.fillrect (x, y, w, h); }}Explode.java
Импорт java.awt.color; import java.awt.graphics; открытый класс Applode { /*Атрибут взрыва танка* / int x, y; // Положение взрыва частная логическая жизнь = true; // Есть ли взрыв int step = 0; // Контроль времени взрыва int [] diameter = new int [] {4, 7, 12, 18, 26, 32, 49, 56, 65, 77, 80, 50, 40, 30, 14, 6}; // Диапазон взрыва Private TankClient TC; // Основное разрешение класса Public Explode (int x, int Y, TankClient TC) {super (); this.x = x; this.y = y; this.tc = tc; } /*Нарисуйте взрыв* / public void Draw (Graphics G) {if (! Live) return; // Если состояние смерти взрыва не заканчивается/*Если время взрыва заканчивается, взрыв не существует, и удалить его в наборе*/if (step == diameter.length) {live = false; // взрыв смерти шаг = 0; // Время шага равен 0 tc.explode.remove (this); // удалить возврат в наборе; } /*Нарисуйте взрыв* / color c = g.getcolor (); g.setcolor (color.orange); G.Filloval (x, y, диаметр [step], диаметр [step]); g.setcolor (c); шаг ++; }}Кровь. Ява
Импорт java.awt.color; импорт java.awt.graphics; импорт java.awt.rectangle; импорт java.util.random; открытый класс кровь {/* Данные сгустка крови*/ int x, y, w, h; // местоположение сгустка крови и размер частного танкового TC; // Основной класс } /* Установите статус выживания сгустка крови* / public void setlive (boolean live) {this.live = live; } /*Начальное значение положения сгустка крови случайным образом - значение* / public blood () {x = r.nextint (600) +100; y = r.nextint (400) +100; w = h = 15; } /*Нарисуйте кровь сгустка* / public void Draw (Graphics G) {if (! Live) return; Цвет c = g.getcolor (); g.setcolor (color.magenta); G.FillRect (x, y, w, h); g.setcolor (c); } /*Выпустить кровь сгустка* / public void fh () {if (! Live) {x = r.nextint (600) +100; y = r.nextint (400) +100; Live = true; }} /*Получить диапазон сгустков крови* / public rectangle getRect () {return new Rectangle (x, y, w, h); }}Выше всего содержание этой статьи. Я надеюсь, что это будет полезно для каждого обучения, и я надеюсь, что все будут поддерживать Wulin.com больше.