ik wil dus graag een pacman over mijn scherm laten lopen. en terwijl hij loopt moet zijn mond "eet" bewegingen maken.
Ik ben hier al een aantal dagen mee aan het proberen. Wat ik onder andere heb geprobeert is verschillende timers, en sleep enzo gebruiken. zodat ik zijn hoofd compleet rond kan maken nadat hij en stap op het veld heeft gezet. moet ik mijn volledige code aanpassen? of is er een simpele oplossing die google en verschillende site zijn vergeten te vermelden.
dit is wat ik nu heb: een pacman die over mijn scherm gaat. dit werkt prima. Alleen ik krijg zijn mond maar niet in beweging. Wie kan me helpen ?
Ik ben hier al een aantal dagen mee aan het proberen. Wat ik onder andere heb geprobeert is verschillende timers, en sleep enzo gebruiken. zodat ik zijn hoofd compleet rond kan maken nadat hij en stap op het veld heeft gezet. moet ik mijn volledige code aanpassen? of is er een simpele oplossing die google en verschillende site zijn vergeten te vermelden.
dit is wat ik nu heb: een pacman die over mijn scherm gaat. dit werkt prima. Alleen ik krijg zijn mond maar niet in beweging. Wie kan me helpen ?
Java:
1
2
3
4
5
6
7
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
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
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
| /* Pacman.java Created 21-11-06 time 12:33AM Copyright Ruler-Nrg */ import javax.swing.*; import java.awt.*; import java.awt.geom.*; import java.awt.event.*; public class PacMan extends JPanel { public static int size = 100; int lastX, lastY; int canvasWidth, canvasHeight; Graphics2D g2; Area pacman; int sizex, sizey; double speedx, speedy; AffineTransform anim; AnimationThread thread; class AnimationThread extends Thread { public void run() { while(true) { animate(); repaint(); try { sleep(50); } catch(InterruptedException e){} } } } public PacMan() { super(new BorderLayout()); int size = 100; Ellipse2D.Double head = new Ellipse2D.Double(0,0,size, size); Ellipse2D.Double eye = new Ellipse2D.Double(size/2 -1,size/5 -1, size/10, size/10); GeneralPath mouth = new GeneralPath(); mouth.moveTo(size,size/4); mouth.lineTo(size/8,size/2); mouth.lineTo(size,size*3/4); mouth.closePath(); pacman = new Area(head); pacman.subtract(new Area(eye)); pacman.subtract(new Area(mouth)); speedx =3; speedy =2; anim = AffineTransform.getTranslateInstance(speedx, speedy); thread = new AnimationThread(); } public void paintComponent(Graphics g) { Dimension d = getSize(); canvasWidth = d.width; canvasHeight = d.height; g2 = (Graphics2D)g; g2.fill(new Rectangle.Double(0,0,sizex,sizey)); g2.setPaint(Color.yellow); g2.fill(pacman); g2.setPaint(Color.black); g2.draw(pacman); } private void animate() { sizex = getWidth(); sizey = getHeight(); pacman.transform(anim); Rectangle bounds = pacman.getBounds(); Point location = bounds.getLocation(); if(location.x > canvasWidth -100) anim = AffineTransform.getTranslateInstance(-speedx,anim.getTranslateY()); if(location.x<0) anim = AffineTransform.getTranslateInstance(speedx,anim.getTranslateY()); if(location.y>canvasHeight -100)anim = AffineTransform.getTranslateInstance(anim.getTranslateX(), -speedy); if(location.y<0)anim = AffineTransform.getTranslateInstance(anim.getTranslateX(), speedy); } public static void main(String[] args) { JFrame frame = new JFrame("drawing"); frame.setSize(600,600); PacMan canvas = new PacMan(); frame.setContentPane(canvas); frame.addWindowListener(new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }); frame.setVisible(true); canvas.thread.start(); } } |
[ Voor 6% gewijzigd door Ruler-Nrg op 22-11-2006 14:00 . Reden: even de codetags toegevoegd :) ]
Dell Precision, T9550, 8gb, 64GB ssd, 1920x1200RGB led.