Missa inte Amazon Prime Deal Days!

Inlägg

Inlägg som Rocky AL har skrivit i forumet
Av Rocky AL

java + dll filer ?

Hittade denna lilla roliga pryl (http://www.kjell.com/?item=87160&path=) på kjell o company och tänkte att den kunde vara lite kul att fiffla runt med. Men jag undrar nu om det är möjligt att programmera denna med java då java är det enda språk jag kan programmera.

Sedan undrar jag om dessa kodexempel är lika i alla programmeringsspråk eller om det är en stor skillnad på dem.
Är det tex bara att skriva "ClearAllDigital;" även i java?
(http://www.apogeekits.com/PDF_Files/Usermanual_K8055_DLL.pdf )

Av Rocky AL

hehe har fått många svar. gjorde så att jag sparade i arrayer som ni sa. true när man trycker ned och false så fort man släpper. Fungerar aldeles utmärkt.

Av Rocky AL

Knapptryckningar i java hackar.

gör ett snakeliknande spel där man kan åka runt 360 grader fritt. Har dock ett problem med knapptryckningar. Om man trycker ned en tangent för att svänga så hackar den ett steg och sedan går det en liten stund innan den börjar svänga mjukt och fint. Ungefär som när man håller ned en knapp i word. Om man trycker ned "A" och håller ner den så blir det först bara ett "A" sedan efter en stund sätter den ut flera an. Ungefär såhär:
A........ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA. Jag vill ha ett jämt flöde redan från start. Hur ska man göra detta? Här är min kod:

public class snakey02 extends Applet implements Runnable{

Thread t;
int keycode;
String keyPos;
double x = 500;
double y = 500;
double dir = 0;
int n = 0;
double speed = 0;

class onKey extends KeyAdapter{
public void keyPressed (KeyEvent e) {
keycode = e.getKeyCode();
switch (e.getKeyCode()) {
case 37:
dir-=0.1;
break;
case 39:
dir+=0.1;
break;
default:
}
repaint();
}
public void keyReleased (KeyEvent e) {
keycode = e.getKeyCode();
switch (e.getKeyCode()) {
case 37:
dir-=0.1;
break;
case 39:
dir+=0.1;
break;
default:
}
repaint();
}
}

...

public void paint(Graphics g){

g.setColor(Color.red);
g.drawLine((int)x,(int)y,(int)x,(int)y);
}

Av Rocky AL

hehe nu börjar bitarna falla på plats. får prova detta imorgon

Av Rocky AL
Citat:

Ursprungligen inskrivet av hunden
Du ska inte avrunda svaret, spara variabeln som flyttal och avrunda bara när du skriver ut det.
Snor lite av Chimairas kod

nyPosX= gammalPosX + hastighet * Cos(vinkel); nyPosY= gammalPosY + hastighet * Sin(vinkel); ritaMask(round(nyPosX), round(nyPosY)); gammalPosX = nyPosX; gammalPosY = nyPosY;

aha ok men vad är det ni kallar för hastighet? det finns ingen hastighet. den enda hastigheten som kommer att finnas är att x och/eller y ökar/minskar.

Edit: detta kanske betyder att hastigheten är ett?

Av Rocky AL
Citat:

Ursprungligen inskrivet av Micket
Du får ha en decimalprecision på placeringen, och först vid utritning kapa dessa/runda av för att sedan få vilken pixel som skall ritas

om jag rundar av svaren så kommer jag bara få 0, 1 eller -1 detta kommer resultera i att den fria masken inte kommer vara så fri utan kommer att vara en mask som bara kan köra rakt åt ett håll.

Av Rocky AL

jo det där stämmer iofs. Kanske borde ha frågat hela frågan. Ett annat problem är att när man ritar ut pixlar på skärmen måste man ha heltal, när man använder sig av radianer så har man alltid ett värde under ett.
När vinkeln är mycket liten, masken kanske åker nästan rakt upp så måste först programmet rita ut tex 7 pixlar i x led innan masken åker en pixel i y led.

Av Rocky AL

Snake 360 grader

Tänkte ge mig på att göra en java applet där det är en mask som konstant åker framåt som man kan styra precis i vilken riktning som helst dvs 360 grader. Jag har hittils bara lyckats med att göra 90 graders svängar men detta genom att ha en variabel som jag kallar "dir" denna variabel kan ha värden 0-4. ex om dir = 0 så åker masken åt höger och om dir = 1 så åker den nedåt. En av mina kompisar har lyckats med ett snake-spel där man kan svänga precis i vilken rikning som helst (en knapp som man svänger motsols med och en annan som man svänger medsols med) genom att använda sig av radianer (Cos och sin) Hur ska jag göra detta?

Av Rocky AL

Riiiiiiiiight....... makes sence..... shit asså du tror nog lite för mycket om mig, jag fattar inte ett smack! känner inte igen något förutom "if" sedan så är det ju skillnad på c# och java.

Asså jag behöver fortfarande hjälp!!! :(:(:(

Av Rocky AL

Hittar inte sjävla satsen där masken dör...

Av Rocky AL
Citat:

Ursprungligen inskrivet av Chimaira
Aha, läste inte igenom koden, såg bara att du använde dig av en stor 2-dimensionell array vilket folk brukar göra när de gör ett rutnät

I vilket fall som helst så har du tänkt helt galet här:
xkorall[x] = x;
ykorall[y] = y;

Nu använder du x-koordinaten för att indexera sig själv i positionen x i arrayen.
Det finns två sätt du kan lösa detta på, det första är att föredra.

1. Skapa en variabel som du kallar masklängd som du ökar med ett varje gång masken rör sig, denna variabeln använder du som indexerare istället för [x] och [y]. Detta betyder att du för varje maskrörelse sparar var masken befinner sig just i den stunden.
Ännu smidigare är att skapa en Lista/Que där du sparar en Point istället för att ha två st arrayer med fast storlek men det är dumt att lära dig det när du inte har koll på hur arrayer fungerar

2. Istället för att spara själva koordinaten sparar du bara 1, vilket betyder att det finns en maskdel där. Dvs om xkorall[x] == 1 och xkorall[y] == 1 så betyder det att det finns en maskdel i koordinaten (x,y). Du har alltså ett rutnät där du sparar om det finns en maskdel i en viss koordinat eller inte.

ettan förstår jag nästan inte alls men du har rätt i att jag inte riktigt vet hur saker o ting fungerar..... tvåan låter smart och lätt men lite mer praktiskt hur skulle detta se ut? kan iofs prova mig fram som jag har gjort med i stort sett allt annat i koden men efter mycket arbete för lite resultat så skulle jag gärna ta emot klar kod

edit: kom på att detta inte kommer att fungera alls, om det ska gå med arrays så måste jag ha 700 xkorall där varje xkor innehåller 700 ykorall detta blir helt sjukt mycket arbete både för mig och för datorn. det bara måste finnas ett bättre sätt. du skulle gärna kunna visa mig hur listor o quees fungerar.

Av Rocky AL

problemet är att jag är ganska dålig på java, men jag tycker att det borde fungera som jag har gjort. Det är ju som en lista kan man säga det finns 700 x värden och 700 y värden, det täcker ju hela plan. måste helt enklet vara något inmatningsfel jag har gjort.

Av Rocky AL

Java snake problem (antagligen ganska lätt)

Håller på med ett litet snake spel i java applet. Detta spel är inte tänkt att masken ska bli längre efter en viss period utan masken har fast startpunkt. Om man kör in i väggen så "dör" masken. Nu till problemet, ytan som masken får åka omkring på är 700x700 och för att kolla om man kört in i sig själv har jag skapat en: int xkorall[701] (inte 699 för att jag vill kunna ha x kordinaten 700 på 700 och inte på 699) och en ykorall[701].

Om masken är på kordinaten (400,500) så kommer xkor[400] att gå från värdet 0 till 400 och ykor[500] få värdet 500. Sedan kommer samma procedur att hända på nästa punkt som masken är på.
Problemet är att detta inte fungerar alls i praktiken, programet verkar skita fullständigt i att kolla båda kordinaterna, den verkar bara kolla en.
Kan någon hjälpa mig snälla! har försökt i flera dagar nu!

Här är programkoden (Notera att jag imortat mer än som behövs och att jag har vissa funktioner som egentligen inte har med spelet alls att göra!)
det verkar inte fungera att klippa in texten riktigt så det blir lite konstigt utseende på koden.
import java.awt.*;
import java.awt.event.*;
import java.applet.Applet;
import java.awt.Graphics;
import java.awt.Color;
import java.lang.*;
import java.applet.*;

import java.awt.print.*;

public class snakey01 extends Applet implements Runnable{

int keyCode;
String keyPos;
int x = 500;
int y = 500;
int Code;
Thread t;
int delay = 40;
int dir = 0;
int timer = 0;
int n = 0;
int g = 0;
int[] xkorall = new int[701];
int[] ykorall = new int[701];
int go = 0;

//Detta är bara skräp!
/*class WindowListeners extends WindowAdapter {
public void windowDeactivated(WindowEvent evt) {
}

public void windowClosing(WindowEvent evt) {
}
} */

class onKey extends KeyAdapter{
public void keyPressed (KeyEvent e) {
Code = e.getKeyCode();
//trycker man höger lr vänstar så ökar eller minskar dir:s värde och masken får en ny riktning (längre ned!)
if (Code == 39) {
dir++;
if (dir > 3){
dir = 0;
}
}
else if (Code == 37) {
dir--;
if (dir < 0){
dir = 3;
}
}
else {
dir = dir;
}
//Detta är bara skräp!
keyCode = e.getKeyCode();
keyPos = e.getKeyCode() == 65 ? "hej" : "down";
repaint();
}
public void keyReleased (KeyEvent e) {
//Allt detta är skräp också!
Code = e.getKeyCode();
keyCode = e.getKeyCode();
keyPos = "up";
repaint();
}
}
public void init() {
//Startar en ny tråd med namnet "t"
t=new Thread(this);
t.start();
setBackground(Color.black);
setForeground(Color.white);
addKeyListener (new onKey());
}
public void start (){
}

public void run() {
//While-satsen är till för att men dör om man hamnar utanför spelplanen
while(x<700 && x>10 && y<700 && y>10){
//timer är bara till för att ändra maskens färg efter en viss tid. Sleep är bara för att masken
timer++;
try {
t.sleep(delay);
} catch (InterruptedException e) {}
//Detta är problemet! xkor har 701 värden och för varje gång en punkt ritas ut på skärmen så sparas de x och y värdet.
xkorall[x] = x;
ykorall[y] = y;
//Här sker själva ökandet på x eller y beroende på vad dir är.
if (dir == 0){
x++;
}
else if (dir == 1){
y++;
}
else if (dir == 2){
x--;
}
else {
y--;
}
/*Detta är en del av problemet! Masken borde bara dö om både x och y värdet stämmer
dvs där masken redan varit en gång men detta tycks inte fungera.!
Om masken "dör" så flyttas den bara till mitten (mest för att se när man "dör")
och go får ett väldigt högt värde som även de ritas ut som ett teckewn på att man är "död"*/
if (x == xkorall[x] && y == ykorall[y]){
x = 120;
y = 300;
go = 1000000;
}
repaint();
}
}

public void update(Graphics g) {
paint(g);
}

public void paint(Graphics g){
//detta ändrar bara färgen på masken efter en viss tid har passerat.
if (timer < 2000){
g.setColor(Color.yellow);
g.fillRect(x,y,1,1);
}
else {
g.setColor(Color.red);
g.fillRect(x,y,1,1);
}
//de första 2 strängarna är inget att bry sig om. x och y värdet där maskens huvud är skrivs ut continuerligt.
g.setColor(Color.green);
g.drawString(""+keyCode,20,20);
g.drawString(""+keyPos,60,20);
g.drawString(""+x,150,20);
g.drawString(""+y,200,20);
for (int n = 0;n < 4000000;n++){
}
g.setColor(Color.black);
g.drawString(""+x,150,20);
g.drawString(""+y,200,20);
g.setColor(Color.green);
/*en grön fyrkant ritas ut på samtliga punkter som masken kommer att dö på.
Detta är konstigt eftersom de gröna punkterna faktiskt följer efter den annars gula masken.*/
g.drawRect(xkorall[x],ykorall[y],0,0);
g.drawRect(10,10,690,690);
g.drawRect(9,9,692,692);
g.drawRect(8,8,694,694);
g.drawString(""+go,500,20);
}
}

Av Rocky AL
Citat:

Ursprungligen inskrivet av CJTF
Hej,

använder också den kanske inte helt lyckade kombinationen Telia och Netgear. Har dock justerat ner MTU-size till 1200 ist för 1500 som jag vill minnas är standardvärdet. Läste om detta på någon engelsk site och jag tycker att det hjälper, nu missar bara Netgear routern en lease omförhandling några få gånger per vecka. Dock hade det ju varit fint om Telia inte snålade så på sina dynamiska IP-addresser utan att man fick en ett par timmar istället för 20min.

/CJTF

Låter bra, men hur gör man?

Av Rocky AL

hmmm... kan ju vara det, men det har ju fungerat i ungefär ett år nu till igår, men man kan ju alltid pröva.

Edit: det fanns ingen updatering Har någon annan med telia samma problem, kan ju vara deras fel.

Av Rocky AL

Netgear + telia krånglar!

Vet inte om detta är rätt forum men det är lite bråttom så....
Jag har telia som operatör och jag har en netgear router. Nu är det så att jag bara kan hålla på med internet i 20 min åt gången! de som har en netgear router eller vilken annan router som helst vet att man ibland måste releasa och sedan renewa den och få en ny lease. grejen är att det står såhär när man har releasat och sedan renewat:

Lease obtained: 0d 0h 20min
lease expires : 0d 0h 19min

Såhär har det alltid stått, men förut så expirade den inte efter 20 min, utan den stannade kvar på lease expires 19min.

Vad göra!?
ps
jag kan inte svara så snabbt eftersom det tar typ 5 min att renewa hela tiden.

Av Rocky AL
Citat:

Ursprungligen inskrivet av oooo
om vi säger så här.

Om du ger motor 1 och 2 exakt samma volt kommer de går lika fort. som du sedan ger motor 1 mindre kommer den automatiskt att svänga.

Så bygg ihop det, är inte allt för svårt.

kanske inte är så svårt för dig, men alla är inte så hemma på kopplingar m.m. dessutom så är det radiostyrt så jag har en knapp för höger/vänster och en annan för fram/bak.
Men det borde ändå gå att fixa det där på något sätt.

Edit: hmmm, man skulle ju kunna göra något med transistorer så att man ökar strömmen på ena motorn när man trycker på sväng knappen, men hur och vilken typ av transistorer vet jag dessvärre inte... Lite hjälp vore super!
PS motorerna går på 4,5V var

Av Rocky AL
Citat:

Ursprungligen inskrivet av 13th.Marine
det kommer bli kortslutning, kolla ordentligt så ser du

hehe lol, jo jag vet att det ser ut som det, men om ni tänker efter så kan ju radiostyrda bilar köra både framåt och bakåt dvs gas/styrning har egentligen inget + och - det är ett litet misstag i bilden bara. och om dom kan byta polaritet så borde det fungera?

Av Rocky AL
Citat:

Ursprungligen inskrivet av annaton
på vilket sätt är detta användningsbart?

Orkar inte förklara, lite invecklat det där, men dörren är liksom tvådelad och..... ähh lite svårförklarat det där, men jag behöver hjälp med kopplingen bara.

Av Rocky AL
Citat:

Ursprungligen inskrivet av thunderinternet
det bör funka?? så länge du inte trycker på bägge knapparna?

känns som om det är fel .. vågar inte uttala mig om det

och du måste ha knappar som sluter både plus o minus annars blir de kortis..

Jag vet inte om radiostyrning sluter polerna, det är det som är problemet.