Gå til innhold

oransjeFugl

Medlemmer
  • Innlegg

    59
  • Ble med

  • Besøkte siden sist

Innlegg skrevet av oransjeFugl

  1. Det oppleves ofte at folk referer til rettigheter, og bruker disse som argumenter i en debatt. Noen eksempler:

     

    Enhver har rett til liv, frihet, og personlig sikkerhet.

    Og derfor er det ikke greit å drepe folk.

     

    Enhver har rett til i andre land å søke og ta imot asyl mot forfølgelse.

    Og derfor burde vi ta imot asylsøkere.

     

    Disse rettighetene er tatt ifra menneskerettighetene.

     

     

    Men ofte dukker det opp rettigheter som jeg aldri har hørt om. Som f.eks. det er en menneskerettighet å kunne få gå på do, derfor burde staten tvinge alle boliger til å installere toalett.

     

    Hvordan skal man egentlig debattere med folk som bruker rettigheter som argumenter? Å er det i det hele tatt greit å argumentere utifra rettigheter?

    • Liker 1
  2. Jeg har ikke lest noen poster i tråden, men vil gjerne ha en oppsummering.

     

    Men først; min mening:

     

    Vi er alle tjent med intellektuell eiendomsrett, ellers forsvinner incentivene til å skape. Derfor er det fornuftig med opphavsrett. Og anskaffelse av verdier uten eiers tilatelse må være forbudt.

     

    Jeg kan se for meg at det i tråden har dukket opp en mengde rasjonaliseringer om at man prøver musikken først, eller man drar på kino og ser den likevel, eller at man drar på konsert og støtter bandet osv. Disse rasjonaliseringene er en beskyttelsesmekanisme i mennesket som i psykologien kalles kognotiv dissonans:

     

    Cognitive dissonance is an uncomfortable feeling caused by holding conflicting ideas simultaneously

     

    Jeg tror vi alle innserst inne innser, at intellektuell eiendomsrett er en bra ting(med mindre du er mega liberalist).

  3. Fordi jeg oppfatter ikke politikken til alle andre som en direkte løgn. Greit nok at det med alkohol-avgift kunne vært hvem som helst, men andre partier er ihvertfall mer jordnære når det kommer til skatter og avgifter, samt ikke trykker like på alkohol-,tobakk- og bensin-knappene som det FrP gjør.

     

    Hva er det med deg og frp? Klarer du ikke å rakke ned på andre partier?

     

    Det er noe som skurrer her...

  4. La oss fylle tråden med film ambefalinger som omhandler frihet vs tvang. Har nylig lest the fountainhead av Ayn Rand, og det hadde vært kult med en filmatisering av den.(vet det fins en eldgammel)

     

    Filmer som handler om frihet vs kollektivisme fins det ikke så mange av tipper jeg. Men filmer som f.eks. 1984 er et eksempel på type film jeg er på jakt etter.

     

    Vet du av noen?

  5. I forrige tråd foregrep jeg framtiden litt. I denne tråden går jeg litt tilbake, og viser hvordan man kan bruke en bildeserie, til å skape en animasjon. De 3 bildene som er vedlagt passer fint til dette.

     

    Aller først trenger vi en Animation klasse, som vi kan bruke om og om igjen til alle våre animasjoner :).

     

    Animation.java:

     

    package grxTest;
    
    import java.awt.*;
    import java.util.*;
    
    import javax.swing.ImageIcon;
    
    public class Animation {
    private ArrayList<AnimFrame> frames; // les på generics om du ikke forstår denne
    private int currFrameIndex; // gjeldene bildeindex (0,1,2)
    private long animTime; // hvor lenge animasjonen har pågått
    private long totalDuration; // hvor lang DENNE animasjonen faktisk er
    
    public Animation() {
    	frames = new ArrayList<AnimFrame>();
    	totalDuration = 0;
    	start();
    }
    
    public synchronized void addFrame(Image image, long duration) {
    	totalDuration += duration;
    	frames.add(new AnimFrame(image, totalDuration));
    }
    
    public synchronized void start() {
    	animTime = 0;
    	currFrameIndex = 0;
    }
    
    public synchronized void update(long elapsedTime) {
    	if(frames.size() > 1) {
    		animTime += elapsedTime;
    
    		if(animTime >= totalDuration) { // dersom animeringen er ferdig, start på nytt
    			animTime = 0;
    			currFrameIndex = 0;
    		}
    
    		if(animTime > getFrame(currFrameIndex).endTime) {
    			currFrameIndex++;
    		} 
    	}
    }
    
    public synchronized Image getImage() {
    	if(frames.size() == 0)
    		return null;
    
    	return getFrame(currFrameIndex).image;
    }
    
    private AnimFrame getFrame(int i) {
    	return frames.get(i);
    }
    
    private class AnimFrame {
    	Image image;
    	long endTime;
    
    	public AnimFrame(Image image, long endTime) {
    		this.image = image;
    		this.endTime = endTime;
    	}
    }
    
    public static Image loadImage(String s) {
    	return new ImageIcon(s).getImage();
    }
    }
    

     

    Koden er ganske rett fram, og greia er at update(elapsedTime) blir kallt på kontinuerlig av en gameLoop(), slik at animeringen skjer. Koden som tegnet bildet, kaller bare på animasjonen sin getImage() metode, da denne vil returnere bilder slik at en animasjon vil forekomme.

     

    Her er rammeverket jeg bruker for å teste Animation klassen:

     

    package grxTest;
    
    import java.awt.*;
    
    import javax.swing.JFrame;
    
    public class Test extends JFrame{
    
    private Animation anim;
    private Image player1;
    private Image player2;
    private Image player3;
    
    private Graphics graphicsBuffer;
    private Image imageBuffer;
    
    public static void main(String[] args) {
    	new Test();
    }
    
    public Test() {
    	setSize(500, 500);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	setIgnoreRepaint(true);
    	setVisible(true);
    
    	player1 = AnimationPractice.loadImage("/home/nab/Pictures/java/player1.png");
    	player2 = AnimationPractice.loadImage("/home/nab/Pictures/java/player2.png");
    	player3 = AnimationPractice.loadImage("/home/nab/Pictures/java/player3.png");
    
    	anim = new Animation();
    	anim.addFrame(player1, 300);
    	anim.addFrame(player2, 600);
    	anim.addFrame(player3, 100);
    
    	gameLoop();
    }
    
    private void gameLoop() {
    
    	long startTime = System.currentTimeMillis();
    	long currTime = startTime;
    
    	while(currTime - startTime < 5000) { // skal vare i 5 sekunder
    		long elapsedTime = System.currentTimeMillis() - currTime;
    		currTime += elapsedTime;
    
    		anim.update(elapsedTime);
    		paintScreen();
    
    		try { Thread.sleep(20); } catch(InterruptedException e) { }
    	}
    
    	System.exit(0);
    }
    
    private void paintScreen() {
    	// draw on buffer
    	if(imageBuffer == null)
    		imageBuffer = createImage(500, 500);
    
    	graphicsBuffer = imageBuffer.getGraphics();
    	// graphicsBuffer.drawImage(Animation.loadImage("/home/nab/Pictures/java/mario_bg.jpg"), 0, 0, null);
    
    	graphicsBuffer.drawImage(anim.getImage(),100,100, null);
    	graphicsBuffer.dispose();
    
    	// draw on the screen
    	Graphics g = getGraphics();
    	g.drawImage(imageBuffer, 0, 0, null);
    }
    }
    

     

    Studer koden inni gameLoop() nøye, fordi den er litt tricky å forstå ved første øyekast. Prøv å print ut elapsedTime eller currTime i loopen, og du vil forstå hensikten, og hva som skjer når du kaller på update(elapsedTume).

     

    Igjen er det brukt double buffering for å forhindre flickering(at bildet blinker).

    post-195530-1276837277,8586_thumb.png

    post-195530-1276837282,9962_thumb.png

    post-195530-1276837294,2522_thumb.png

  6. Har akkurat begynt å prøve å lære meg grafikkprogrammering i java. Og tenkte jeg skulle dele litt kunnskap med andre som har lyst til det samme. Folk må gjerne påpeke feil i koden, eller komme med bedre løsninger.

     

    I denne tråden ligger kode for et program, der et bilde beveger seg lineært nedover.

     

    Game.java:

    package grxTest;
    
    import java.awt.*;
    import javax.swing.*;
    
    public class Game extends JFrame {
    
    private boolean gameRunning;
    
    Image offscreenImage;
    Graphics offscreenGraphics;
    
    private Image player1;
    
    private int x = 0;
    private int y = 0;
    
    public static void main(String[] args) {
    	new Game();
    }
    
    public Game() {
    	// selvforklarende?  Ignore får appen til å ignorer kall til paint elns.
    	setSize(800, 600);
    	setBackground(Color.red);
    	setIgnoreRepaint(true);
    	setResizable(false);
    	setVisible(true);
    
    	loadImages();
    
    	// start the game
    	gameRunning = true;
    	gameLoop();
    }
    
    private void loadImages() {
    	// loader inn i minnet
    	player1 = loadImage("/home/nab/Pictures/java/player1.png");
    }
    
    private void gameLoop() {
    
    	while(gameRunning) {
    
    		drawStuff();
    
    		// vi pauser for å ikke stjele all cpu tid
    		try { Thread.sleep(20); } catch (Exception e) {}
    	}
    }
    
    private void drawStuff() {
    
    	// double buffer for å forhindre flickering(bildet hakker)
    	offscreenImage = createImage(800, 600);
    	offscreenGraphics = offscreenImage.getGraphics();
    	offscreenGraphics.clearRect(0, 0, 800, 600);
    
    	offscreenGraphics.drawImage(player1, x, y, null);
    
    	// moves the player
    	y++;
    	x++;
    
    	Graphics2D g = (Graphics2D) getGraphics();
    	g.drawImage(offscreenImage, 0, 0, null);
    	g.dispose();
    }
    public Image loadImage(String s) {
    	return new ImageIcon(s).getImage();
    }	
    }
    

     

    Da er mine første skritt tatt. Dette var jo lett! Tegneteknikken som brukes her kalles for active rendering. D.v.s. at vi aktivt går inn og tenger på skjermen, i motsetning til passive rendering der vår implementasjon av paint(Graphics g) blir kallt på jevnlig.

     

    I drawStuff() tegnes først bildet på en bildebuffer, istedenfor rett på skjermen. Dette forhindrer at bildet "blinker". Prøv å tegn rett på skjermen så vil du se hva jeg mener med flickering.

     

    Ja nå har vi faktisk et lite rammeverk klart til å utvides enda mer. Neste post vil handle om animering av bildet. D.v.s. bilder i rekkefølge som danner en animasjon/bevegelse.

  7. Fulgte rådet ditt og lagde sokoban. Var litt gøy :)

     

    Sokoban.java:

    package Sokoban;
    
    import java.awt.*;
    import java.awt.event.*;
    import java.util.*;
    import javax.swing.*;
    
    public class Sokoban extends JFrame {
    static final char PLAYER = '@';
    static final char WALL = '#';
    static final char BOX = '$';
    static final char FLOOR = ' ';
    static final char GOAL = '.';
    static final char PLAYER_ON_GOAL = '+';
    static final char BOX_ON_GOAL = '*';
    
    static final String testLevel = "#####|#@$.#|#####";
    static final String testLevel2 = 
    											"#######|"+
    											"#.@ # #|"+
    											"#$* $ #|"+
    											"#   $ #|"+
    											"# ..  #|"+
    											"#  *  #|"+
    											"#######";
    
    private GameLogic gl;
    private JPanel p = new JPanel();
    
    public Sokoban(String level) {
    	setTitle("sokoban ");
    	setSize(300, 300);
    	setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    	setLayout(new FlowLayout(FlowLayout.LEFT, 0, 0));
    
    	gl = new GameLogic(level);
    	printMap();
    
    	addKeyListener(new KeyAdapter() {
    		public void keyTyped(KeyEvent e) {
    			char c = e.getKeyChar();
    			if(c == 'w')
    				gl.doMove(-1, 0);
    			else if(c == 's')
    				gl.doMove(1, 0);
    			else if(c == 'a')
    				gl.doMove(0, -1);
    			else if(c == 'd')
    				gl.doMove(0, 1);
    			else if(c == 'q')
    				System.exit(0);
    
    			printMap();
    		}
    	});
    
    
    	setVisible(true);
    }
    
    // console print and GUI update
    public void printMap() {
    	char[][] map = gl.getMap();
    	int longest = gl.getLongest();
    	String path = "src/Sokoban/images/";
    	String path2 = "";
    	ImageIcon pic;
    
    	p.removeAll();
    	p = new JPanel();
    	p.setLayout(new GridLayout(map.length, longest));
    
    	for(int i=0;i < map.length;i++) {
    		for(int k=0;k < longest;k++) {
    			if(map[i][k] == PLAYER)
    				path2 = "mover16x16.png";
    			else if(map[i][k] == WALL)
    				path2 = "wall16x16.png";
    			else if(map[i][k] == BOX)
    				path2 = "movable16x16.png";
    			else if(map[i][k] == GOAL)
    				path2 = "target16x16.png";
    			else if(map[i][k] == FLOOR)
    				path2 = "blank16x16.png";
    			else if(map[i][k] == PLAYER_ON_GOAL)
    				path2 = "mover_on_target16x16.png";
    			else if(map[i][k] == BOX_ON_GOAL)
    				path2 = "movable_on_target16x16.png";
    
    				pic = new ImageIcon(path+path2);
    
    			p.add(new JLabel(pic));
    
    			System.out.print(map[i][k]);
    		}
    
    		System.out.println();
    	}
    	add(p);
    	validate(); // repaints the JLabels
    
    	if(gl.checkWin()) {
    		JOptionPane.showMessageDialog(this, "Congrats!");
    		System.exit(0);
    	}
    }
    
    public void recvInput() {
    
    	Scanner in = new Scanner(System.in);
    	String input = in.next();
    	while(! input.equals("q")) {
    		for(int i=0;i < input.length();i++) {
    			char move = input.charAt(i);
    			if(move == 'a')
    				gl.doMove(0, -1);
    			else if(move == 'd')
    				gl.doMove(0, 1);
    			else if(move == 'w')
    				gl.doMove(-1, 0);
    			else if(move == 's')
    				gl.doMove(1, 0);
    			else
    				System.out.println("illegal input");
    		}
    		printMap(); 
    		input = in.next();
    	}
    }
    
    public static void main(String[] args) {
    	Sokoban game1 = new Sokoban(testLevel2);
    	// game1.recvInput();   no more console input.
    }
    }
    

     

    GameLogic.java

    package Sokoban;
    
    public class GameLogic {
    static final char PLAYER = '@';
    static final char WALL = '#';
    static final char BOX = '$';
    static final char FLOOR = ' ';
    static final char GOAL = '.';
    static final char PLAYER_ON_GOAL = '+';
    static final char BOX_ON_GOAL = '*';
    
    private char PREV_PIECE;
    
    private char[][] map;
    private boolean[][] goals;
    
    private int longest; // the longest line in the map. Used in array initialization
    private int playerY, playerX;
    private char prevMove = ' ';
    
    public GameLogic(String level) {
    
    	String[] parts = level.split("\\|");
    
    	// figure out which line is the longest(for array creation)
    	longest = 1;
    	for(int i=0;i < parts.length;i++)
    		if(parts[i].length() > longest)
    			longest = parts[i].length();
    
    	map = new char[parts.length][longest];
    	goals = new boolean[parts.length][longest];
    
    	// fill arrays with values
    	for(int i=0;i < parts.length;i++) {
    		String line = parts[i];
    		for(int k=0;k < line.length();k++) {
    			map[i][k] = line.charAt(k);
    
    			// player position
    			if(line.charAt(k) == '@') {
    				playerY = i;
    				playerX = k;
    			}
    			// goals
    			if(line.charAt(k) == '.')
    				goals[i][k] = true;
    		}
    	}
    }
    
    public void set(char c, int y, int x) {
    	map[y][x] = c;
    }
    
    public char get(int y, int x) {
    	if(y < 0 || x < 0 || x >= longest || y >= map.length)
    		return 'X'; // random char different than FLOOR and GOAL
    
    	return map[y][x];
    }
    
    
    
    public int getLongest() {
    	return longest;
    }
    
    public void doMove(int dy, int dx) {
    	int nextY = playerY+dy;
    	int nextX = playerX+dx;
    
    	// inside array?
    	if(nextY < map.length && nextX < longest && nextY > -1 && nextX > -1) { // array bounds check
    		char next = get(nextY, nextX);
    		char next2 = get(nextY+dy, nextX+dx); // the next piece after the next piece. E.g. the wall behind the box.
    
    		if(next != WALL ) { // walls?
    
    			PREV_PIECE = ' ';
    
    			if(prevMove == GOAL || prevMove == BOX_ON_GOAL)
    				PREV_PIECE = '.';
    
    			/* from here on there are many possible situations */
    
    			if(next == FLOOR) {
    				prevMove = get(playerY+dy, playerX+dx);
    				set(PLAYER, playerY+dy, playerX+dx);
    				set(PREV_PIECE, playerY, playerX);
    				updatePos(dy, dx);					
    			}
    			else if(next == GOAL) {
    				prevMove = get(playerY+dy, playerX+dx);
    				set(PLAYER_ON_GOAL, playerY+dy, playerX+dx);
    				set(PREV_PIECE, playerY, playerX);
    				updatePos(dy, dx);
    			}
    			else if(next == BOX || next == BOX_ON_GOAL) {
    				if(next2 == FLOOR) {
    					prevMove = get(playerY+dy, playerX+dx);
    					set(PLAYER, playerY+dy, playerX+dx);
    					set(BOX, playerY+dy+dy, playerX+dx+dx);
    					set(PREV_PIECE, playerY, playerX);
    					updatePos(dy, dx);
    				}
    				else if(next2 == GOAL) {
    					prevMove = get(playerY+dy, playerX+dx);
    					set(PLAYER, playerY+dy, playerX+dx);
    					set(BOX_ON_GOAL, playerY+dy+dy, playerX+dx+dx);
    					set(PREV_PIECE, playerY, playerX);
    					updatePos(dy, dx);						
    				}
    			}				
    		}
    		else {
    			System.out.println("wall error");
    		}
    	}
    }
    
    public boolean checkWin() {
    	for(int i=0;i < map.length;i++) {
    		for(int k=0;k < longest;k++) {
    			if(goals[i][k] == true && map[i][k] != BOX_ON_GOAL)
    				return false;
    		}
    	}
    	return true;
    }
    public void updatePos(int dy, int dx) {
    	playerY += dy;
    	playerX += dx;
    }
    
    public char[][] getMap() {
    	return map;
    }
    
    }
    

  8. http://www.imdb.com/title/tt0083658/

     

    Filmen ligger på top 250 på imdb.com. Jeg syns den var helt ok, men ikke noe mer enn det.

     

    Alle scenene med lys og røyk var ganske stilig, og filmen hadde en dyster stemning, noe som var ganske kult.

    Mange interessante dialoger. Det var mye bra innhold( eksistensialisme, man/machine relasjoner). Og musikken var digg. Men det var mange merkelige scener og uvirkelige replikker, noe som sikkert kan forklares ved at filmen er fra 1982(relativt "gammel").

     

    Det var directors edition jeg såg. Filmen fikk meg til å føle at Deckard var en replicant, men om man tenker etter, hadde det vært ganske lol egentlig. Jeg tror han var human.

     

    Menne, jeg fatter ikke hvorfor så mange priser denne filmen så høyt? Ja okey greit den er verdt å se, men top 250 på imdb?

  9. Det er påbudt med bilbelte i Norge. Jeg vet ikke detaljene, men noe ala at myndige personer må ha på bilbelte. Folk under 18 tror jeg ikke får bot da de ikke er myndige.

     

    Hva sier egentlig politikere når de vedtar en slik lov? Prøv å tenk litt etter; hvorfor i allverden skulle det være påbudt med bilbelte?? Alle fornuftige mennesker bruker jo bilbelte?

     

    Jeg kan ikke se noen annen utvei enn at politikerne mener de er bedre skikket til å styre våre liv, og vi må beskyttes fra oss selv. Mener politikerne at vi er dumme?

  10. I dag med rød-grønt flertall på stortinget, er det slik at lommeboka ofte bestemmer. Dersom du har rike foreldre, kan du kjøpe deg inn på private vgs skoler. Resten må gå på offentlige skoler. Dette er arbeiderparti og sv politikk.

     

    Med frps skolepolitikk, blir det slik at elever velger seg en privatskole, og staten tar regninga. Dette kalles for stykkprisfinansiering. Dette skaper valgfrihet, og konkurranse, som igjen vil føre til bedre skoler, da skolene må konkurere om elevene.

     

    Med frps politikk vil alle kunne gå på privatskoler, gratis.

     

    Dersom en privatskole bestemmer seg for å ta mer skolepenger enn det staten gir per elev, så får den private skolen INGEN penger.

     

    Derfor forstår ikke jeg, hvorfor folk sier at frps skolepolitikk er usosial, fordi da vil "kun de rike" kunne kjøpe seg inn på en skole. Det er jo det stikk motsatt som vil skje med frps skolepolitikk.

     

    Jeg er ingen ekspert på resten av frps saker, men har nå brukt noen timer på å lese meg opp på frps skolepolitikk og stykkprisfinansiering. Og jeg syns dette høres kjempebra ut, fordi konkurranse vil føre til bedre skoler.

     

    Altså, jeg bryr meg fint lite om Kjell Inge Røkke blir enda rikere av dette, så lenge skolene blir bedre, og det fortsatt er staten som tar regninga. Siden det er så mange som har noe imot frps skolepolitikk, må det være noe jeg ikke har fått med meg. Kan noen enlighten me please?

     

    Emnetittelen er såpass vag, slik at ingen finner på å skrive noe, uten å ha lest innlegget. Og pls ikke la dette bli en sosialisme vs kapitalisme tråd. Og ikke la marxisten ta over tråden heller.

×
×
  • Opprett ny...