Newsgroup: it.comp.programmare.win32
Titolo: realizzare programma anagrammi

vorrei realizzare un programma con le seguenti specifiche: -il
programma apre un file di testo dove sono contenute delle (una per
parola per ogni riga) -ne sceglie una casualmente e la stampa sullo
schermo mantenendo l'ordine delle lettere, ma effettuando delle
trasformazioni casuali su ogni lettera (tra cui simmetria verticale,
orizzontale, rotazione anche di un angolo diverso da 90° e suoi
multipli, cambio del colore, variazione della grandezza del carattere)
-a quel punto l'utente deve interpretare quanto appare sullo schermo e
deve inserire la parola di partenza -il programma verifica l'esattezza
della risposta dell'utente e propone di continuare nel gioco oppure di
uscire. Ebbene, vorrei alcuni consigli: -secondo voi quale linguaggio
di programmazione è meglio utilizzare (considerando che non mastico
tutti i giorni linguaggio in codice, e che conosco a livello basilare
c++ e visual basic)? -come fare per ruotare, effettuare simmetrie,
cambiare colori, grandezze dei singoli caratteri? Grazie per l'aiuto.

 cambiare colori, grandezze dei singoli caratteri? Grazie per l'aiuto.
Premetto che è una cosa fattibile in milioni di modi e in moltissimi 
linguaggi di programmazione ma visto che tu conosci VB e C++ ti posso dire 
che:
1) In C++ puoi fare tutto quello che vuoi anche se non è semplicissimo. Ad 
esempio dovrai sicuramente usare un memory DC per il mirror del testo.
2) In VB è estremamente semplice tutta la parte di contorno, la parte più 
cruciale (quella di tracciamento di un testo rototraslato con font, 
dimensioni, e colori diversi) devi per forza farla utilizzando alcune API 
(in pratica sono le stesse chiamate che fai in C++) e questo complica 
sicuramente le cose. Tanto per darti un'idea Ddi seguito ti copio e incollo 
una funzione (copiata da un altro messaggio nel news del VB) per tracciare 
il testo.
3) Potresti anche divertirti a farlo in Power Point: con il VBA puoi 
utilizzare le funzioni base per ruotare, traslare, mirrorare e fare 
quant'altro vuoi al tuo testo da tracciare su un foglio vuoto in modo 
estremamente semplice. Inoltre usando il registratore di macro puoi anche 
fare a "mano" un esempio di quello che vuoi ottenere e poi spulciare nel 
codice su come è stato realizzato.
Questo codice è da scrivere in un modulo in VB:
Public Const LF_FACESIZE = 32
Public Type LOGFONT
        lfHeight As Long
        lfWidth As Long
        lfEscapement As Long
        lfOrientation As Long
        lfWeight As Long
        lfItalic As Byte
        lfUnderline As Byte
        lfStrikeOut As Byte
        lfCharSet As Byte
        lfOutPrecision As Byte
        lfClipPrecision As Byte
        lfQuality As Byte
        lfPitchAndFamily As Byte
        lfFaceName(LF_FACESIZE) As Byte
End Type
Public Declare Function SetBkMode Lib "gdi32" (ByVal hdc As Long, ByVal
nBkMode As Long) As Long
Public Declare Function CreateFontIndirect Lib "gdi32" Alias
"CreateFontIndirectA" (lpLogFont As LOGFONT) As Long
Public Declare Function SelectObject Lib "gdi32" (ByVal hdc As Long, ByVal
hObject As Long) As Long
Public Declare Function DeleteObject Lib "gdi32" (ByVal hObject As Long) As
Long
Public Declare Function TextOut Lib "gdi32" Alias "TextOutA" (ByVal hdc As
Long, ByVal X As Long, ByVal Y As Long, ByVal lpString As String, ByVal
nCount As Long) As Long
Public Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long
Public Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long,
ByVal hdc As Long) As Long
'Font weight constants
Public Const FW_BOLD = 700
Public Const FW_DONTCARE = 0
Public Const FW_EXTRABOLD = 800
Public Const FW_EXTRALIGHT = 200
Public Const FW_HEAVY = 900
Public Const FW_BLACK = FW_HEAVY
Public Const FW_LIGHT = 300
Public Const FW_MEDIUM = 500
Public Const FW_NORMAL = 400
Public Const FW_REGULAR = FW_NORMAL
Public Const FW_SEMIBOLD = 600
Public Const FW_DEMIBOLD = FW_SEMIBOLD
Public Const FW_THIN = 100
Public Const FW_ULTRABOLD = FW_EXTRABOLD
Public Const FW_ULTRALIGHT = FW_EXTRALIGHT
'Background mode constants
Public Const TRANSPARENT = 1
Public Const OPAQUE = 2
Public Sub PrintRotatedText(hwnd As Long, sText As String, X As Long, Y As
Long, Angle As Integer, sFontName As String, nFontSize As Integer, bBold As
Boolean, bItalic As Boolean)
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    '   hWnd    - handle of the window to print text to
    '   sText   - text to be printed
    '   X       - X coordinate of the printing to start from (in pixels)
    '   Y       - Y coordinat of the printig to start from   (in pixels)
    '   Angle   - value between 0 and 3600, representing the angle of
rotation
    '             in 0.1 degrees increment
    '   sFontName   - name of the font to be used - must be a TrueType
font.
    '   nFontSize   - in points - the closest match is selected
    '                 0 - The font mapper uses a default height value when
    '                      it searches for a match
    '
    '   bBold       - True - bold font is used
    '   bItalic     - True - italic font is used
    '
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
    Dim lf As LOGFONT
    Dim hFont As Long
    Dim hOldFont As Long
    Dim hdc As Long
    Dim nI As Integer
    Dim lRetVal As Long
    'Prepare the LOGFONT structure
    For nI = 0 To Len(sFontName) - 1
        If nI = 31 Then
            lf.lfFaceName(nI) = 0
            Exit For
        End If
        lf.lfFaceName(nI) = Asc(Mid$(sFontName, nI + 1, 1))
    Next nI
    lf.lfFaceName(nI) = 0
    lf.lfHeight = nFontSize
    If bBold Then
        lf.lfWeight = FW_BOLD
      Else
        lf.lfWeight = FW_NORMAL
    End If
    If bItalic Then
        lf.lfItalic = True
    End If
    lf.lfEscapement = Angle
    lf.lfOrientation = Angle
    'Get hDc for the window
    hdc = GetDC(hwnd)
    'Set the background mode to transparent
    'for the text printing operation
    lRetVal = SetBkMode(hdc, TRANSPARENT)
    'Create the rotated font
    hFont = CreateFontIndirect(lf)
    'Select the new font into the DC
    hOldFont = SelectObject(hdc, hFont)
    'Print the text
    lRetVal = TextOut(hdc, X, Y, sText, Len(sText))
    'Restore the previous font
    SelectObject hdc, hOldFont
    'Destroy the created font
    DeleteObject hFont
    'Reset the background mode
    lRetVal = SetBkMode(hdc, OPAQUE)
    'Release the DC
    ReleaseDC hwnd, hdc
End Sub

cambiare colori, grandezze dei singoli caratteri? Grazie per l'aiuto.
Usa GTK + Cairo, con Python come linguaggio di programmazione.
Un approcio 'alternativo' e' quello di usare XHTML + SVG + piccolo
webserver.
Saluti  Manlio Perillo