Foto

Wasd 4-i-rad


27 svar till detta ämne
  • Vänligen logga in för att kunna svara

#1 WASD

WASD

    #12 Fuskagent

  • Medlem
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 13 199 inlägg
    Utdelad oktober 2018Utdelad juli 2015

Postad 22 juli 2010 - 00:50:33

Från skaparen av: WASD Radio, WASD Chat, WASD RPG, WASD Skraplotter, etc... kommer nu: WASD 4-i-rad!

http://dl.dropbox.co...ASD 4-i-rad.jar

Uppdatering: Botten är nu smart smile.gif

Edit: Lagt in Anti-aliasing biggrin.gif
Före: http://i.imgur.com/gzcIO.png
Efter:


Gjorde detta programmet på typ 1-2 timmar. Feedback pl0x smile.gif

Bottens algoritm:
1. Botten kollar ifall den kan vinna, botten lägger där isåfall.
2. Botten kollar ifall du kan vinna, den blockar dig isåfall.
3. Botten slumpar nånstans att lägga. Ifall du kan vinna efter att den lägger där den slumpade så slumpar den en ny plats tills du inte kan vinna också lägger den där.
4. Om du inte kan vinna var botten än lägger så slumpar den bara nåt.
Exempel: Ifall den lägger på steg 2 hoppar den ur algoritmen och kollar inte 3 och 4.
Har skydd emot att den fastnar i en loop på steg 3 ifall du kan vinna var botten än lägger.


Källkod: (Algoritmen är inte med här, botten slumpar var den ska lägga)
CODE
import java.awt.Canvas;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.awt.image.BufferStrategy;
import java.util.Random;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;

public class Main extends Canvas{

private boolean running = true;
private int[][] row = new int[7][6];

private BufferStrategy strategy;
private JFrame container;
private Color cc = new Color(0, 0, 180);

public static void main(String[] args) {
Main m = new Main();
m.rita();
}
public Main(){
container = new JFrame("WASD 4-i-rad");
JPanel panel = (JPanel)container.getContentPane();
panel.setPreferredSize(new Dimension(460,400));
panel.setLayout(null);
setBounds(0,0,605,405);
container.setLocation(300, 200);
panel.add(this);
setIgnoreRepaint(true);
addMouseListener(new mouseList());
container.pack();
container.setResizable(false);
container.setVisible(true);
container.addWindowListener(new WindowAdapter() {
@Override
public void windowClosing(WindowEvent e) {
System.exit(0);
}
});
requestFocus();
createBufferStrategy(2);
strategy = getBufferStrategy();
for (int x = 0; x < 7; x++) {
for (int y = 0; y < 6; y++) {
row[x][y]=0;
}
}
}
private class mouseList extends MouseAdapter{
@Override
public void mousePressed(MouseEvent e) {
if(putnito((e.getX()-7)/64, true))
botput();
else
JOptionPane.showMessageDialog(container, "Du kan inte lägga här.");
}
}
private void rita(){
while(running){
Graphics2D g = (Graphics2D) strategy.getDrawGraphics();
g.setRenderingHint(RenderingHints.KEY_ANTIALIASING,
RenderingHints.VALUE_ANTIALIAS_ON);
g.setColor(cc);
g.fillRect(0,0,605,405);
for (int x = 0; x < 7; x++) {
for (int y = 0; y < 6; y++) {
switch(row[x][y]){
case 0:
g.setColor(Color.white);
break;
case 1:
g.setColor(Color.green);
break;
case 2:
g.setColor(Color.red);
break;
}
g.fillOval(15+x*64, 15+y*64, 50, 50);
}
}
g.dispose();
strategy.show();
try {
Thread.sleep(20);
} catch (Exception ex) {
}
}
}
private boolean putnito(int x, boolean player){
boolean avalible=(row[x][0]==0);
if(avalible){
int y=5;
for (int i = 5; i > -1; i--) {
if(row[x][i]==0){
y=i;
row[x][i]=(player? 1 : 2);
break;
}
}
}
testwin();
return avalible;
}
private void botput(){
Random rand = new Random();
boolean temp = false;
do{
temp = putnito(rand.nextInt(7), false);
}while(!temp);
}
private void checknowinner(){
boolean nowin = true;
for (int x = 0; x < 7; x++) {
for (int y = 0; y < 6; y++) {
if(row[x][y]==0)
nowin=false;
}
}

if(nowin){
JOptionPane.showMessageDialog(container, "Ingen vann denna rundan!\n
Tryck OK för att starta nytt spel.");
newgame();
}
}
private void testwin(){
int winner = 0;

for (int x = 0; x < 4; x++) { // -
for (int y = 0; y < 6; y++) {
if(row[x][y]==1 && row[x+1][y]==1 && row[x+2][y]==1 && row[x+3][y]==1)
winner=1;
else if(row[x][y]==2 && row[x+1][y]==2 && row[x+2][y]==2 && row[x+3][y]==2)
winner=2;
}
}
for (int x = 0; x < 7; x++) { // |
for (int y = 0; y < 3; y++) {
if(row[x][y]==1 && row[x][y+1]==1 && row[x][y+2]==1 && row[x][y+3]==1)
winner=1;
else if(row[x][y]==2 && row[x][y+1]==2 && row[x][y+2]==2 && row[x][y+3]==2)
winner=2;
}
}
for (int x = 0; x < 4; x++) { // \
for (int y = 0; y < 3; y++) {
if(row[x][y]==1 && row[x+1][y+1]==1 && row[x+2][y+2]==1 && row[x+3][y+3]==1)
winner=1;
else if(row[x][y]==2 && row[x+1][y+1]==2 && row[x+2][y+2]==2 && row[x+3][y+3]==2)
winner=2;
}
}
for (int x = 3; x < 7; x++) { // /
for (int y = 0; y < 3; y++) {
if(row[x][y]==1 && row[x-1][y+1]==1 && row[x-2][y+2]==1 && row[x-3][y+3]==1)
winner=1;
else if(row[x][y]==2 && row[x-1][y+1]==2 && row[x-2][y+2]==2 && row[x-3][y+3]==2)
winner=2;
}
}
if(winner==1){
JOptionPane.showMessageDialog(container, "Du vann denna rundan!\n
Tryck OK för att starta ett nytt spel.");
newgame();
}
else if(winner==2){
JOptionPane.showMessageDialog(container, "WASDs professionellt kodade bot vann denna rundan!
\nTryck OK för att starta ett nytt spel.");
newgame();
}
else
checknowinner();
}
private void newgame(){
for (int x = 0; x < 7; x++) {
for (int y = 0; y < 6; y++) {
row[x][y]=0;
}
}
}
}
Jag tycker koden ser proffsig ut Metoden "putnito" var misstype av "putinto" (put into, lägg i) men jag lät den vara putnito tongue.gif Ni som blivit inspirerade av mig att lära er Java får gärna kopiera den och experimentera runt och fråga ifall det är något ni inte förstår.

Redigerat av WASD, 22 juli 2010 - 14:33:05.

"Arbetet med en liten uppdatering av Fuska har gått framåt och förhoppningsvis så blir arbetet klart till slutet av månaden." - admin

#2 Laserturken

Laserturken

    #8 Forumit

  • Medlem
  • PipPipPipPipPipPipPipPip
  • 1 427 inlägg
    Utdelad augusti 2014

Postad 22 juli 2010 - 00:55:57

Nice! Jag tycker spelet borde ligga i WASD.nu efter den är klar smile.gif

#3 WASD

WASD

    #12 Fuskagent

  • Medlem
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 13 199 inlägg
    Utdelad oktober 2018Utdelad juli 2015

Postad 22 juli 2010 - 00:56:47

Nice! Jag tycker spelet borde ligga i WASD.nu efter den är klar smile.gif

Det är tänkt att WASD.nu ska bli ett textbaserat spel men jag kanske skaffar en sida där jag lägger in alla javaprogram jag gjort smile.gif
"Arbetet med en liten uppdatering av Fuska har gått framåt och förhoppningsvis så blir arbetet klart till slutet av månaden." - admin

#4 Laserturken

Laserturken

    #8 Forumit

  • Medlem
  • PipPipPipPipPipPipPipPip
  • 1 427 inlägg
    Utdelad augusti 2014

Postad 22 juli 2010 - 01:01:08

Nice! Jag tycker spelet borde ligga i WASD.nu efter den är klar smile.gif

Det är tänkt att WASD.nu ska bli ett textbaserat spel men jag kanske skaffar en sida där jag lägger in alla javaprogram jag gjort smile.gif


Ok smile.gif

#5 WASD

WASD

    #12 Fuskagent

  • Medlem
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 13 199 inlägg
    Utdelad oktober 2018Utdelad juli 2015

Postad 22 juli 2010 - 01:16:16

Uppdatering: Lagt in Anti-aliasing biggrin.gif Ladda ner i första inlägget, samma länk. Källkoden också uppdaterad.

Före och Efter Anti-aliasing:




Redigerat av WASD, 22 juli 2010 - 01:17:57.

"Arbetet med en liten uppdatering av Fuska har gått framåt och förhoppningsvis så blir arbetet klart till slutet av månaden." - admin

#6 KeeperofMee

KeeperofMee

    #6 Spelkatt

  • Medlem
  • PipPipPipPipPipPip
  • 416 inlägg

Postad 22 juli 2010 - 07:55:10

Gött spel

är bara lite för lätt att vinna
det är jag som spelar smile.gif



Wasd 4 i rad ...Jag spelar

Redigerat av KeeperofMee, 22 juli 2010 - 07:51:10.


#7 Gäst_Jesus_*

Gäst_Jesus_*
  • Gäster

Postad 22 juli 2010 - 08:13:26

Bra och snyggt men du kanske kan göra så att man kan ställa in svårighetsgrad, huruvida det ska vara 2, 3, 4, 5 eller t.o.m 6 i rad etc.

#8 Poesi

Poesi

    #10 Forumkändis

  • Medlem
  • PipPipPipPipPipPipPipPipPipPip
  • 3 751 inlägg

Postad 22 juli 2010 - 10:08:06

Som sagt är det för lätt att vinna, klicka bara på samma rad hela tiden utan att bry dig om vad motståndare gör så vinner du.

"Starta band. spela så in i helvete. Fuck utbildning." - mackie172


#9 Gäst_CrazyCake_*

Gäst_CrazyCake_*
  • Gäster

Postad 22 juli 2010 - 10:13:53

Gött spel

är bara lite för lätt att vinna
det är jag som spelar smile.gif



Wasd 4 i rad ...Jag spelar

Såklart så vill vi se när du spelar.
Fast kanske inte.

Fint WASD, men du får verkligen fixa boten, way to easy smile.gif

Edit:"WASDs professionellt kodade bot vann denna runda" biggrin.gif

Redigerat av CrazyCake, 22 juli 2010 - 10:16:33.


#10 zitroz

zitroz

    #9 Forumlegend

  • Medlem
  • PipPipPipPipPipPipPipPipPip
  • 2 172 inlägg

Postad 22 juli 2010 - 10:48:42

Gör det svårare.. alldeles för lätt nu sad.gif
Äter man en människa är man sjuk i huvudetÄter man en apa, hund eller katt är man sjuk i huvudetMen om man äter grisar, kossor, fiskar och kycklingar är man normal

#11 Laserturken

Laserturken

    #8 Forumit

  • Medlem
  • PipPipPipPipPipPipPipPip
  • 1 427 inlägg
    Utdelad augusti 2014

Postad 22 juli 2010 - 11:02:59

Sätt in en hjärna på botten så funkar den bättre.

#12 WASD

WASD

    #12 Fuskagent

  • Medlem
  • PipPipPipPipPipPipPipPipPipPipPipPip
  • 13 199 inlägg
    Utdelad oktober 2018Utdelad juli 2015

Postad 22 juli 2010 - 12:22:08

Jag har skrivit i första inlägget att jag ska det. Antagligen fixar jag det idag.
"Arbetet med en liten uppdatering av Fuska har gått framåt och förhoppningsvis så blir arbetet klart till slutet av månaden." - admin


Logga in för att kunna skriva inlägg