[C#] Prosta animacja

0

Witam musze zrobić prosta animacje w c# [Windows Application]. Kulka ktora odbija się od ścian pod kątem 90 stopni.

zdołałem zrobić tyle:

http://images34.fotosik.pl/112/30429c7f7f1262b4.jpg
kulka sie rusza ale znika po "wyjsciu za obszar" okienka. Byłbym wdzieczny jesli ktoś mógłby mi pomóc

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace WindowsApplication13
{
    public partial class Form1 : Form
    {
        int x = 5, y = 150; // miejsce skad zaczyna leciec kulka
        public Form1()
        {
            InitializeComponent();
        }

        private void timer1_Tick(object sender, EventArgs e)
        {
            Graphics grafika = this.CreateGraphics();
            Pen p = new Pen(Color.Black, 10);
            grafika.Clear(Color.Gray);
            grafika.DrawEllipse(p, x, y, 10, 10); // wymiary kulki

            // kierunek lotu
            x = x + 1; 
            y = y + 1;
        }

        
        
    }
}
0

Wystarczy umieścic odpowiedni warunek, np.

 if((kulka.Left <= 0) || (kulka.Left + kulka.Width >= form1.activeform.Width))
{
x = -x;
}
else if ((kulka.Top <= 0) || (kulka.Top + kulka.Height >= form1.activeform.Height))
{
y = -y;
}

Kod pisałem z ręki, także może zawierac błędy, ale ogólnie przedstawia ideę jak zrobic odbicia. Poza tym poczytaj sobie na MSDN o komendzie intersect Może się przydac

0

Już zrobilem to powyższe troszke innym sposobem ale dziekuje za rozmowe

Żeby nie zakładać nowego tematu mam kolejny problem

dwa textboxy
z pierwszego wczytuje sie tekst z pliku
do tego momentu zrobilem

teraz chodzi o to aby po nacisnieciu buttona pobrac tekst z piewszego textboxa i zaszyfrowac przez rot-13 i taki zaszyfrowany tekst ma sie pojawic w drugim textboxie

nie mam bladego pojecia jak sie do tego zabrac

0

Szyfrowanie rot-13 polega na przesunięciu danej litery o 13 miejsc w prawo. Poniżej przykładowy kod, zrobiłem to tak jak mi się to "widziało", dlatego też nie jestem w 100% pewien czy ta implementacja jest poprawna, nie mniej jednak każdy znak jest przesunięty o 13 miejsc.

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        public string zdanie = "Zdanie";
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = zdanie;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            ASCIIEncoding zm = new ASCIIEncoding();
            byte[] tab = zm.GetBytes(zdanie);
            byte[] tab1 = new byte[tab.Length];
            int i = 0;

            foreach (byte x in tab)
            {
                tab1[i] = Convert.ToByte(x + 13);
                i++;
            }
            string end = zm.GetString(tab1);
            textBox2.Text = end;
        }
0

w textbox2 za kazdym razem pojawia sie
gqn{vr

poza tym rot-13 nie zawsze dodaje 13 znakow
ten szyfr odnosi sie wylącznie do liter

A-M +13
N-Z -13

w kazdym razie dziekuje bardzo za pomoc

0
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;

namespace WindowsApplication25
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button2_Click(object sender, EventArgs e)
        {
            
            StreamReader s = new StreamReader("C:\\zzz.txt"); 
            textBox1.Text = s.ReadToEnd();
                        
        } 

        public string zdanie = "zdanie";
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = zdanie;
        }

        private void button1_Click(object sender, EventArgs e)
        {
            {
                ASCIIEncoding zm = new ASCIIEncoding();
                byte[] tab = zm.GetBytes(zdanie);
                byte[] tab1 = new byte[tab.Length];
                int i = 0;

                foreach (byte x in tab)
                {
                    tab1[i] = Convert.ToByte(x + 13);
                    i++;
                }
                string end = zm.GetString(tab1);
                textBox2.Text = end;
            }
        }

        


    }
}

ok doszedlem do tego ze on zamienia słowo zdanie i dlatego wychodzi ?qn{vr

dalej nie mam pojecia jak zrobic zeby pobieralo to co jest w textbox1
chodzi o te linijki

private void button2_Click(object sender, EventArgs e)
        {
            
            StreamReader s = new StreamReader("C:\\zzz.txt"); 
            textBox1.Text = s.ReadToEnd();
                        
        } 

        public string zdanie = "zdanie";
        private void Form1_Load(object sender, EventArgs e)
        {
            textBox1.Text = zdanie;
        }

po wcisnieciu jednego przycisku pobiera mi do textbox1 to co mam w pliku ale po wcisnieciu drugiego konwertuje mi slowo zdanie zamiast tego co jest w textboxie1

0

Widać, że wkleiłeś kod, a nie przeanalizowałeś. Normalne że cały czas pobiera zdanie "Zdanie", bo tak jest to napisane w kodzie. TextBox pobiera zmienną typu string zdanie = "Zdanie", to wyświetla i konwertuje. Usuń to. Przeanalizuj kod i zobacz co się po kolei wykonuje.

Skoro w twoim zadaniu zdanie zostaje wczytane do textbox1 to zadeklaruj zmienna typu :

string zdanie = textBox1.Text;

Takie trudne ?

0

juz niewazne zrobilem, dziekuje bardzo za pomoc bez Was nie dalbym rady

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