Permalänk
Medlem

hjälp med java programmering

hej kan någon förklara/hjälpa mig programmera med klassen PaintWindow . Resultatet ska vara en enkel bild. Bilden ska också innehålla lite text. .

Permalänk
Medlem

Det finns ingen PaintWindow-klass i standardbiblioteket. Kan du förtydliga frågan?

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av Teknocide:

Det finns ingen PaintWindow-klass i standardbiblioteket. Kan du förtydliga frågan?

Behöver hjälp med skapa en bild med hjälp av programmering!

Permalänk

Objekt som rör sig

Onödigt att starta ny tråd.. En enkel fråga vid sidan om; Jag ska förflytta ett objekt fram och tillbaka. Men vette fan hur jag skriver metoden. Dvs objektet står markerad vid t ex pixel (100), ska röra sig en bit till pixel (150), sen tillbaka igen osv... Så här ska det INTE se ut, men så ni förstår vad jag vill uppnå..

public void moveKorv();

{
korv.slowMoveVertical(160);
korv.slowMoveVertical(100);
korv.slowMoveVertical(160);
korv.slowMoveVertical(100);
}

... eller nåt i stil med..

public void slowMoveVertical()
{

if(korv är vid slutdestination = (160))
{
slowMoveVertical tillbaka till pixel(100);
}
else
{
fortsätt till du kommer till pixel (160);
}
then
{
vänd och skicka tillbaka objektet till pixel (100);
därefter repetera 4 gånger
}

Permalänk
Medlem
Skrivet av busta_rhyme:

Onödigt att starta ny tråd.. En enkel fråga vid sidan om; Jag ska förflytta ett objekt fram och tillbaka. Men vette fan hur jag skriver metoden. Dvs objektet står markerad vid t ex pixel (100), ska röra sig en bit till pixel (150), sen tillbaka igen osv... Så här ska det INTE se ut, men så ni förstår vad jag vill uppnå..

public void moveKorv();

{
korv.slowMoveVertical(160);
korv.slowMoveVertical(100);
korv.slowMoveVertical(160);
korv.slowMoveVertical(100);
}

jag är också nybörjare så kan inget :/ tyvärr

Permalänk
Medlem
Skrivet av miss_p:

Behöver hjälp med skapa en bild med hjälp av programmering!

Hur långt har du kommit med ditt program hittills? Posta gärna lite kod, använd [code]-taggar runt textmassan för att behålla vitutrymme intakt.

Skrivet av busta_rhyme:

Onödigt att starta ny tråd.. En enkel fråga vid sidan om; Jag ska förflytta ett objekt fram och tillbaka. Men vette fan hur jag skriver metoden. Dvs objektet står markerad vid t ex pixel (100), ska röra sig en bit till pixel (150), sen tillbaka igen osv... Så här ska det INTE se ut, men så ni förstår vad jag vill uppnå..

public void moveKorv();

{
korv.slowMoveVertical(160);
korv.slowMoveVertical(100);
korv.slowMoveVertical(160);
korv.slowMoveVertical(100);
}

Du menar fram och tillbaka i oändlighet? Då måste du använda någon sorts loop, helst i en separat tråd för att inte själva programfönstret ska sluta svara.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

okej kan posta koden än så länge men den är nog fel.:p

public class Textdemo { private static class Color { public Color() { } } import java.awt.*; // Color, Font public class TextDemo { private PaintWindow window = new PaintWindow(); private Color brown = new Color(123,62,41); private Color husfasad = new Color(128,64,0); private Object Color; private void hus(Color fasad, int x, int y) { window.fillRect(x, y, 40, 20, fasad); window.fillRect(x, y-10, 40, 10, Color.BLACK); window.fillRect(x+35, y-14, 3, 4, Color.BLACK); window.fillRect(x+8, y+4, 6, 8, Color.WHITE); window.fillRect(x+26, y+4, 6, 8, Color.WHITE); } public void bakgrund() { window.fillRect(0, 0, window.getBackgroundWidth(), 200, Color.CYAN); window.fillOval(250, 140, 100, 100, Color.ORANGE); window.fillRect(0, 200, window.getBackgroundWidth(), window.getBackgroundHeight()-200, Color.BLUE); window.fillOval(300, 210, 200, 30, Color.GREEN); window.fillOval(350, 190, 130, 50, Color.GREEN); hus(brown, 390, 175); hus(brown, 325, 197); hus(brown, 320, 200); } public void text() { int signaturX, signaturY; Text titel = new Text("Solnedgång", new Font("SansSerif",Font.ITALIC,24),Color.ORANGE); Text signatur = new Text("Rolf Axelsson"); signatur.setBackground(new Color(128,128,255)); window.showImage(titel, 50, 50); signaturX = window.getBackgroundWidth() - signatur.getIconWidth() - 3; signaturY = window.getBackgroundHeight() - signatur.getIconHeight() - 3; window.showImage(signatur, signaturX, signaturY); } public static void main(String[] args) { TextDemo u1b = new TextDemo(); u1b.bakgrund(); u1b.text(); } } }

Permalänk
Skrivet av Teknocide:

Du menar fram och tillbaka i oändlighet? Då måste du använda någon sorts loop, helst i en separat tråd för att inte själva programfönstret ska sluta svara.

Nej, tre-fyra gånger bara.. Som en tennisboll som studsar, det blir ju mindre och mindre tills den stannar..

Permalänk
Medlem

Allting före import java.awt.*; kan du ta bort, det verkar ha kommit med av misstag. Sen är det ett } för mycket i slutet. Jag fetmarkerar det jag ser är fel till att börja med...

public class Textdemo { private static class Color { public Color() { } } import java.awt.*; // Color, Font public class TextDemo { private PaintWindow window = new PaintWindow(); private Color brown = new Color(123,62,41); private Color husfasad = new Color(128,64,0); private Object Color; private void hus(Color fasad, int x, int y) { window.fillRect(x, y, 40, 20, fasad); window.fillRect(x, y-10, 40, 10, Color.BLACK); window.fillRect(x+35, y-14, 3, 4, Color.BLACK); window.fillRect(x+8, y+4, 6, 8, Color.WHITE); window.fillRect(x+26, y+4, 6, 8, Color.WHITE); } public void bakgrund() { window.fillRect(0, 0, window.getBackgroundWidth(), 200, Color.CYAN); window.fillOval(250, 140, 100, 100, Color.ORANGE); window.fillRect(0, 200, window.getBackgroundWidth(), window.getBackgroundHeight()-200, Color.BLUE); window.fillOval(300, 210, 200, 30, Color.GREEN); window.fillOval(350, 190, 130, 50, Color.GREEN); hus(brown, 390, 175); hus(brown, 325, 197); hus(brown, 320, 200); } public void text() { int signaturX, signaturY; Text titel = new Text("Solnedgång", new Font("SansSerif",Font.ITALIC,24),Color.ORANGE); Text signatur = new Text("Rolf Axelsson"); signatur.setBackground(new Color(128,128,255)); window.showImage(titel, 50, 50); signaturX = window.getBackgroundWidth() - signatur.getIconWidth() - 3; signaturY = window.getBackgroundHeight() - signatur.getIconHeight() - 3; window.showImage(signatur, signaturX, signaturY); } public static void main(String[] args) { TextDemo u1b = new TextDemo(); u1b.bakgrund(); u1b.text(); } } }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

jaha okej gjort det men funkar fort inte köra ..Står så här efteråt :

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
symbol: class PaintWindow
location: class TextDemo
at TextDemo.<init>(Textdemo.java:12)
at TextDemo.main(Textdemo.java:49)

Permalänk
Medlem
Skrivet av busta_rhyme:

Nej, tre-fyra gånger bara.. Som en tennisboll som studsar, det blir ju mindre och mindre tills den stannar..

En enkel lösning är att ha en utgångspunkt (100) och göra en metod där bollen påverkas av en påhittad uppåtriktad kraft (med andra ord studsar)..

Om du tänker hur en boll vanligtvis beter sig när den studsar, så får den en uppåtriktad kraft som sjunker allt eftersom bollen stiger. När bollen når banans höjdpunkt är kraften noll, och sedan blir den negativ vilket gör att bollen börjar falla mot marken igen.

Tänk dig något sånt här (pseudokod)

studsa(double kraft) { // spara bollens ursprungsposition // loopa medan (bollens nuvarande position + kraft) är större än bollens ursprungsposition // bollens position = (bollens position + kraft) // rita ut bollen // kraft = kraft - 0.1; // slut på loop }

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem
Skrivet av miss_p:

jaha okej gjort det men funkar fort inte köra ..Står så här efteråt :

Exception in thread "main" java.lang.RuntimeException: Uncompilable source code - cannot find symbol
symbol: class PaintWindow
location: class TextDemo
at TextDemo.<init>(Textdemo.java:12)
at TextDemo.main(Textdemo.java:49)

Din lärare har antagligen skickat med en fil som heter PaintWindow.class (eller .java)
Det enklaste är att lägga den i samma mapp som du har TextDemo.java i.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Skrivet av Teknocide:

En enkel lösning är att ha en utgångspunkt (100)..

Jo utgångspunkt är bra, men finns det någon enklare kod och helst inte i Pseudokod

T ex, objektet rör sig enkel väg... (hur får man den upp/ner sen igen, och tillbaka ett par ggr?)

public class Movement
{
private Circle objekt;

// Här kommer KONSTRUKTORN

public void draw()
{
objekt = new Circle();
objekt.changeColor("black");
objekt.moveHorizontal(20);
objekt.moveVertical(100);
objekt.makeVisible();
objekt.changeSize(40);
}
// Sedan kommer metoden som endast går enkel väg här!!

public void moveObjekt()
{
objekt.slowMoveVertical(-100);
}

}

Här längst ner ser du metoden jag vill använda, men hur får jag den fram och tillbaka och inte bara enkel väg..

Permalänk
Medlem
Skrivet av busta_rhyme:

T ex, objektet rör sig enkel väg... (hur får man den upp/ner sen igen, och tillbaka ett par ggr?)

Om du inte vill använda dig av samma metod flera gånger så får du skriva någon sorts algoritm liknande den jag skissade ovan.

Visa signatur

Kom-pa-TI-bilitet

Permalänk

Vill bara att det ska ske automatiskt när man kallar just den metoden.. Så antar att jag behöver lite till innanför klamrarna..

Permalänk
Medlem
Skrivet av busta_rhyme:

Vill bara att det ska ske automatiskt när man kallar just den metoden.. Så antar att jag behöver lite till innanför klamrarna..

Ok, supersimpelt:

private int bounces = 4; public void slowMoveVertical(int distance) { int pos = this.getVertical(); int d = Math.abs(distance); int direction = distance / d; int limiter = d / bounces; for (int h = 0; h < bounces; h++) { int target = d - (h * limiter) for (int i = 0; i < target; i++) { pos += direction; this.moveVertical(pos); this.paint(); } for (int i = target; i > 0; i--) { pos -= direction; this.moveVertical(pos); this.paint(); } } }

Otestat och kantigt. Eftersom jag inte har nån direkt koll på vad som finns i din Circle-klass så kan jag inte svara på hur den ritar om sig, etc.

Visa signatur

Kom-pa-TI-bilitet

Permalänk
Medlem

Hej, här är lite mer avancerade studsande bollar som jag och en kompis gjorde i en lab. Detta använder lite mer fysikaliska beräkningar med gravitation, rörelsemängd och elastiska kollisioner. Är det en skoluppgift så råder jag att inte bara kopiera eftersom det kommer synas att det är en för avancerad matematisk modell som ligger bakom

Lägg alla java filer i samma mapp och kompilera var för sig, sen kör igång showApplet.html

Animation
Java | import java.awt.*; public a - SwecAnim - g0UeLqk5 - Pastebin.com
Bounce
Java | import java.awt.*; import jav - SwecBounce - k187BF7L - Pastebin.com
Ball
Java | import java.awt.Color; pu - SwecBall - 64mL1J7e - Pastebin.com
showApplet
HTML | <HTML> <HEAD> <TITLE> Bou - ShowApplet.html - 0gcCKfx0 - Pastebin.com