RGB - zmiana nasycenia koloru

Odpowiedz Nowy wątek
Karl
2011-10-25 21:32
Karl
0

Otóż, mam problem z pewnym programem:

Napisz program który pozwala na wybranie trybu czerwonego (klawisz "R"), zielonego (klawisz "G") lub niebieskiego (klawisz "B") a następnie zwiększenie lub zmniejszenie nasycenia wybranego składnika w kolorze tła okienka (klawisz strzałki w górę i klawisz strzałki w dół).

O ile wybranie tych kolorów nie stanowi problemu, to o tyle mam problem ze zmizną nasycenie koloru za pomocą strzałek, próbowałem wiele sposobów ale żaden nie działa.. wszelkie wskazówki mile widziane :)

Oto kod:

package HelloWorld;

import java.util.Random;
import static org.lwjgl.opengl.GL11.*;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class HelloWorld {

    static float r = 0;
    static float g = 0;
    static float b = 0;
    static Random gen;

    static void display() {

        glClearColor(r, g, b, 0.0f);
        glClear(GL_COLOR_BUFFER_BIT);
    }

    public static void klawiatura() {

         if(Keyboard.getEventKey()==Keyboard.KEY_R){
               r = 1;
               g = 0;
               b = 0;
               int n = 100;
               if(Keyboard.getEventKey()==Keyboard.KEY_DOWN){
                   for(int i=0; i<n; i++){
                        r = r - 0.01f;
                    }
                    } 
                    }

           }

    static void init(){
         gen = new Random();
    }

    public static void main(String[] args) {
        try {

            Display.setDisplayMode(new DisplayMode(300, 300));
            Display.setTitle("Hello World!");
            Display.setLocation(-1, -1);
            Display.create();
            init();
            while (!Display.isCloseRequested() && !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
             //   mysz();
                klawiatura();
                display();
                Display.update();

            }
        } catch (LWJGLException ex) {
        //System.out.println(ex.getMessage());
        }
    }
}

Pozostało 580 znaków

2011-10-25 22:11

Rejestracja: 13 lat temu

Ostatnio: 1 dzień temu

0

Blok

if(Keyboard.getEventKey()==Keyboard.KEY_DOWN){}

jest WEWNĄTRZ bloku

if(Keyboard.getEventKey()==Keyboard.KEY_R){}

Oznacza to, że w celu wykonania pierwszego bloku, musiałyby być jednocześnie spełnione OBA warunki.

Sprawdzenie naciśnięcia strzałki musi być na tym samym poziomie zagnieżdzenia, co sprawdzenie naciśnięcia R, G, B, a wciśnięcie R lub G lub B ustawia wartość dowolnej zmiennej, która jest odczytywana po naciśnięciu strzałki i w zależności od wartości tej zmiennej można interpretować, który kolor ostał wybrany.

Pozostało 580 znaków

flamer29a
2011-10-26 20:27
flamer29a
0
import org.lwjgl.opengl.GL11;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import org.lwjgl.LWJGLException;
import org.lwjgl.input.Keyboard;
import org.lwjgl.opengl.Display;
import org.lwjgl.opengl.DisplayMode;

public class Main {

    static float r = 0;
    static float g = 0;
    static float b = 0;
    static Random gen;

    static void init() {
        gen = new Random();
    }

    public static void main(String[] args) {
        try {
            Display.setDisplayMode(new DisplayMode(800, 600));
            Display.setTitle("Hello World");
            Display.setLocation(-1, -1);
            Display.create();
            while (!Display.isCloseRequested() && !Keyboard.isKeyDown(Keyboard.KEY_ESCAPE)) {
                klawiatura();
                display();
                Display.update();
            }
        } catch (LWJGLException ex) {
            Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, ex);
        }
    }

    public static void display() {
        GL11.glClearColor(barwaR, barwaG, barwaB, 0.0f);
        GL11.glClear(GL11.GL_COLOR_BUFFER_BIT);
    }
    static int tryb = 0;
    static final int TRYB_R = 1;
    static final int TRYB_G = 2;
    static final int TRYB_B = 3;
    static float barwaR = 0;
    static float barwaG = 0;
    static float barwaB = 0;

    public static void klawiatura() {

        while (Keyboard.next()) {
            if (Keyboard.getEventKey() == Keyboard.KEY_R) {
                if (Keyboard.getEventKeyState()) {
                    tryb = TRYB_R;
                }
            }
            if (Keyboard.getEventKey() == Keyboard.KEY_G) {
                if (Keyboard.getEventKeyState()) {
                    tryb = TRYB_G;
                }
            }
            if (Keyboard.getEventKey() == Keyboard.KEY_B) {
                if (Keyboard.getEventKeyState()) {
                    tryb = TRYB_B;
                }
            }
            if (Keyboard.getEventKey() == Keyboard.KEY_UP) {
                if (Keyboard.getEventKeyState()) {
                    switch (tryb) {

                        case TRYB_R:
                            if (barwaR < 1) {
                                barwaR = barwaR + 0.1f;
                            }
                            break;
                        case TRYB_G:
                            if (barwaG < 1) {
                                barwaG = barwaG + 0.1f;
                            }
                            break;
                        case TRYB_B:
                            if (barwaB < 1) {
                                barwaB = barwaB + 0.1f;
                            }
                            break;
                    }
                }
            }
            if (Keyboard.getEventKey() == Keyboard.KEY_DOWN) {
                if (Keyboard.getEventKeyState()) {
                    switch (tryb) {

                        case TRYB_R:
                            if (barwaR > 0) {
                                barwaR = barwaR - 0.1f;
                            }
                            break;
                        case TRYB_G:
                            if (barwaG > 0) {
                                barwaG = barwaG - 0.1f;
                            }
                            break;
                        case TRYB_B:
                            if (barwaB > 0) {
                                barwaB = barwaB - 0.1f;
                            }
                            break;
                    }
                }
            }
        }
    }
}
edytowany 1x, ostatnio: madmike, 2016-12-13 18:26

Pozostało 580 znaków

Odpowiedz

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0